【软通动力】安卓VS鸿蒙第三方件切换宝典 V2.0(第一部分) 原创 精华
众所周知,安卓应用开发经过这么多年的发展相对成熟和稳定,鸿蒙OS作为后来者兼容一个成熟的开发体系会节省很多推广和开发成本。但在实际开发中,代码层面仍然有很多细节上的差异,会给初次开发人员造成困扰。
本宝典旨在汇总实际开发中第三方件接入时的代码差异,以期帮助开发人员更好的进行开发作业,由于目前接触的开发类型有限,所汇总的内容多少会有疏漏,后期我们会进一步完善和补全。
欢迎关注我们以及我们的专栏,方便您及时获得相关内容的更新。
消息&多线程
1.设置线程级别
安卓:
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_XXXXX);
鸿蒙:
ProcessManager.setThreadPriority(Thread.xxx);
2.判断是否是主线程
安卓:
Looper.getMainLooper().getThread() == Thread.currentThread()
鸿蒙:
EventRunner.getMainEventRunner().isCurrentRunnerThread();
3.取消任务操作
安卓:
task.cancel(true);
鸿蒙:
task.revoke();
布局&组件
1.展示一段时间的提示信息弹框
安卓:
Toast makeText(Context context,String msg,int duration).show();
鸿蒙:
new ToastDialog(Context context).setText(String msg).show();
2.给控件设置它的左中右上的图片
安卓:
1.代码中:
Drawable dwLeft = getResources().getDrawable(R.mipmap.ic_launcher);
dwLeft.setBounds(0, 0, dwLeft.getMinimumWidth(), dwLeft.getMinimumHeight());
View.setCompoundDrawables(dwLeft, null, null, null);
2.布局中:
android:drawableLeft=“@mipmap/ic_launcher”
android:drawableTop=“@mipmap/ic_launcher”
android:drawableRight=“@mipmap/ic_launcher”
android:drawableBottom=“@mipmap/ic_launcher”
鸿蒙:
1.代码中:
Resource resource = context.getResourceManager().getResource(ResourceTable.Media_select);
PixelMapElement element = new PixelMapElement(resource);
companent.setAroundElements(element,null,null,null);
2.布局中:
ohos:element_left=“$media:icon”
ohos:element_right=“$media:icon”
ohos:element_top=“$media:icon”
ohos:element_bottom=“$media:icon”
3.设置控件的多态化
安卓:
1.在布局中给控件设置:android:background=“@drawable/bt_login”
2.在xml中实现bt_login
<?xml version=“1.0” encoding=“utf-8”?>
<selector xmlns:android=“http://schemas.android.com/apk/res/android”>
<!-- 控件点击状态 -->
<item android:drawable=“@drawable/button_down” android:state_pressed=“true”></item>
<!-- 控件选中状态 -->
<item android:drawable=“@drawable/button_down” android:state_checked=“true”></item>
</selector>
鸿蒙:
Resource selectResource = context.getResourceManager().getResource(ResourceTable.Media_select);
Resource emptyResource = context.getResourceManager().getResource(ResourceTable.Media_unselect);
PixelMapElement selectElement = new PixelMapElement(selectResource);
PixelMapElement emptyElement = new PixelMapElement(emptyResource);
StateElement checkElement = new StateElement();
checkElement.addState(new int[]{ComponentState.COMPONENT_STATE_SELECTED}, selectElement);
checkElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, emptyElement);
component.setButtonElement(null);
component.setAroundElements(checkElement,null,null,null);
component.setSelected(true);
4.scrollView滚动
安卓:
<ScrollView
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
<LinearLayout
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical”>
</LinearLayout>
</ScrollView>
鸿蒙:
<ScrollView
ohos:height=“match_content”
ohos:width=“match_parent”
>
<DirectionalLayout
ohos:height=“match_content”
ohos:width=“match_content”
ohos:orientation=“vertical”>
</DirectionalLayout>
</ScrollView>
5.组件隐藏
安卓:
不可见: android:visibility=“invisible”; Java代码:view.setVisibility(View.INVISIBLE); 隐藏: android:visibility=“gone”; Java代码:view.setVisibility(View.GONE);
鸿蒙:
ohos:visibility=“hide”;comp.setVisibility(HIDE);ohos:visibility=“invisible”;comp.setVisibility(INVISIBLE)
6.线性布局
安卓:
LinearLayout
鸿蒙:
DirectionalLayout
7.相对布局
安卓:
RelativeLayout
鸿蒙:
DependentLayout
8.帧布局
安卓:
FrameLayout
鸿蒙:
StackLayout
9.选项卡
安卓:
TabLayout
鸿蒙:
TabList和Tab
10.像素单位
安卓:
dp
鸿蒙:
vp
11.控件的对齐方式
安卓:
Gravity.CENTER
鸿蒙:
LayoutAlignment.CENTER
12.布局名称及用法
安卓:
RelativeLayout相对布局LinearLayout线性布局
鸿蒙:
DependentLayout相对布局 DirectionalLayout线性布局
13.自定义布局
安卓:
View inflate =
inflate(getContext(), R.layout.reg_view, this);
鸿蒙:
component = LayoutScatter.getInstance(context).parse(com.istone.videocache.ResourceTable.Layout_ability_player,layout,false);
layout.addComponent(component, 0);
14.叠加布局,层级叠加
安卓:
FrameLayout
鸿蒙:
StackLayout
感谢分享,期待完整版
感谢支持,会持续更新
感谢分享,学习了!!
感谢支持
感谢大佬分享
期待连载,感谢田老师分享
感谢田老师分享,期待更多作品
第五个那边是指
安卓"invisible"对应 鸿蒙"hide"
和
安卓"gone"对应鸿蒙"invisible"
吗
辉哥继续发力
加油加油