鸿蒙切换安卓,安卓vs鸿蒙第三方件切换宝典!

本文详细对比了安卓与鸿蒙OS在消息处理、多线程、布局和组件等方面的开发差异,包括线程优先级设置、主线程判断、任务取消、提示信息显示、控件图片设置、多态化、ScrollView滚动、组件隐藏、布局对齐方式等,旨在帮助开发者更好地理解和适配鸿蒙OS开发环境。
摘要由CSDN通过智能技术生成

众所周知,安卓应用开发经过这么多年的发展相对成熟和稳定,鸿蒙 OS 作为后来者兼容一个成熟的开发体系会节省很多推广和开发成本。但在实际开发中,代码层面仍然有很多细节上的差异,会给初次开发人员造成困扰。

c7fc964959b5d6d61052647b4e5f6868.png

本宝典旨在汇总实际开发中第三方件接入时的代码差异,以期帮助开发人员更好的进行开发作业,由于目前接触的开发类型有限,所汇总的内容多少会有疏漏,后期我们会进一步完善和补全。

01

消息&多线程

①设置线程级别

安卓:android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_XXXXX);

鸿蒙:ProcessManager.setThreadPriority(Thread.xxx);

②判断是否是主线程

安卓:Looper.getMainLooper().getThread() == Thread.currentThread()

鸿蒙:EventRunner.getMainEventRunner().isCurrentRunnerThread();

③取消任务操作

安卓:task.cancel(true);

鸿蒙:task.revoke();

02

布局&组件

①展示一段时间的提示信息弹框

安卓:Toast makeText(Context context,String msg,int duration).show();

鸿蒙:new ToastDialog(Context context).setText(String msg).show();

②给控件设置它的左中右上的图片

安卓:

代码中:

Drawable dwLeft = getResources().getDrawable(R.mipmap.ic_launcher);

dwLeft.setBounds(0, 0, dwLeft.getMinimumWidth(), dwLeft.getMinimumHeight());

View.setCompoundDrawables(dwLeft, null, null, null);

布局中:

android:drawableLeft=“@mipmap/ic_launcher”

android:drawableTop=“@mipmap/ic_launcher”

android:drawableRight=“@mipmap/ic_launcher”

android:drawableBottom=“@mipmap/ic_launcher”

鸿蒙:

代码中:Resource resource = context.getResourceManager().getResource(ResourceTable.Media_select);

PixelMapElement element = new PixelMapElement(resource);

companent.setAroundElements(element,null,null,null);

布局中:ohos:element_left=“media:icon"ohos:elementright="media:icon"ohos:elementright="media:icon”

ohos:element_top=“media:icon"ohos:elementbottom="media:icon"ohos:elementbottom="media:icon”

③设置控件的多态化

安卓:

在布局中给控件设置:

android:background=“@drawable/bt_login”

在 xml 中实现 bt_login:

item>

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);

④scrollView 滚动

安卓:

android:layout_width=“match_parent”

android:layout_height=“match_parent”>

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:orientation=“vertical”>

LinearLayout>

ScrollView>

鸿蒙:

ohos:height=“match_content”

ohos:width=“match_parent”

>

ohos:height=“match_content”

ohos:width=“match_content”

ohos:orientation=“vertical”>

DirectionalLayout>

ScrollView>

⑤组件隐藏

安卓:

不可见:

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)

⑥线性布局

安卓:LinearLayout

鸿蒙:DirectionalLayout

⑦相对布局

安卓:RelativeLayout

鸿蒙:DependentLayout

⑧帧布局

安卓:FrameLayout

鸿蒙:StackLayout

⑨选项卡

安卓:TabLayout

鸿蒙:TabList 和 Tab

⑩像素单位

安卓:dp

鸿蒙:vp

⑪控件的对齐方式

安卓:Gravity.CENTER

鸿蒙:LayoutAlignment.CENTER

⑫布局名称及用法

安卓:RelativeLayout相对布局

LinearLayout线性布局

鸿蒙:DependentLayout相对布局

DirectionalLayout线性布局

⑬自定义布局

安卓: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);

⑭叠加布局,层级叠加

安卓:FrameLayout

鸿蒙:StackLayout

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值