【软通动力】安卓VS鸿蒙第三方件切换宝典 V2.0(第一部分) 原创 精华

软通田可辉
发布于 2021-5-24 09:23
浏览
13收藏

众所周知,安卓应用开发经过这么多年的发展相对成熟和稳定,鸿蒙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

更多原创,请关注:软通动力HarmonyOS学院https://harmonyos.51cto.com/column/30

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2021-5-24 09:23:07修改
13
收藏 13
回复
举报
10条回复
按时间正序
/
按时间倒序
mb609898e2cfb86
mb609898e2cfb86

感谢分享,期待完整版

回复
2021-5-24 10:17:43
软通田可辉
软通田可辉 回复了 mb609898e2cfb86
感谢分享,期待完整版

感谢支持,会持续更新

回复
2021-5-24 10:26:06
longlong899
longlong899

感谢分享,学习了!!

回复
2021-5-24 10:50:28
软通田可辉
软通田可辉 回复了 longlong899
感谢分享,学习了!!

感谢支持

回复
2021-5-24 11:15:02
芒果爱学习
芒果爱学习

感谢大佬分享

回复
2021-5-24 14:09:20
芳芳爱学习
芳芳爱学习

期待连载,感谢田老师分享

回复
2021-5-24 14:10:21
可可学鸿蒙
可可学鸿蒙

感谢田老师分享,期待更多作品

回复
2021-5-24 14:12:25
am_ZhouYH
am_ZhouYH

第五个那边是指

安卓"invisible"对应 鸿蒙"hide"

安卓"gone"对应鸿蒙"invisible"

回复
2021-5-24 15:18:46
软通小精灵
软通小精灵

辉哥继续发力

回复
2021-5-26 09:05:39
娜子开心
娜子开心

加油加油

回复
2021-6-8 14:11:03
回复
    相关推荐