众所周知,安卓应用开发经过这么多年的发展相对成熟和稳定,鸿蒙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
- r
-
- ight="media:icon”
- ohos:element_top=“media:icon" ohos:element_bottom="media:icon"ohos:element
- b
-
- ottom="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