安卓VS鸿蒙第三方件切换宝典 V2.0(第一部分)

系统
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com

[[401683]]

 想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

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

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

欢迎关注我们以及我们的专栏,方便您及时获得相关内容的更新。

消息&多线程

1.设置线程级别

安卓:

  1. android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_XXXXX); 

鸿蒙:

  1. ProcessManager.setThreadPriority(Thread.xxx); 

2.判断是否是主线程

安卓:

  1. Looper.getMainLooper().getThread() == Thread.currentThread() 

鸿蒙:

  1. EventRunner.getMainEventRunner().isCurrentRunnerThread(); 

3.取消任务操作

安卓:

  1. task.cancel(true); 

鸿蒙:

  1. task.revoke(); 

布局&组件

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

安卓:

  1. Toast makeText(Context context,String msg,int duration).show(); 

鸿蒙:

  1. new ToastDialog(Context context).setText(String msg).show(); 

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

安卓

1.代码中:

  1. Drawable dwLeft = getResources().getDrawable(R.mipmap.ic_launcher); 
  2. dwLeft.setBounds(0, 0, dwLeft.getMinimumWidth(), dwLeft.getMinimumHeight()); 
  3. View.setCompoundDrawables(dwLeft, nullnullnull); 

 2.布局中:

  1. android:drawableLeft=“@mipmap/ic_launcher” 
  2. android:drawableTop=“@mipmap/ic_launcher” 
  3. android:drawableRight=“@mipmap/ic_launcher” 
  4. android:drawableBottom=“@mipmap/ic_launcher” 

 鸿蒙:

1.代码中:

  1. Resource resource = context.getResourceManager().getResource(ResourceTable.Media_select); 
  2. PixelMapElement element = new PixelMapElement(resource); 
  3. companent.setAroundElements(element,null,null,null); 

 2.布局中:

  1. ohos:element_left=“media:icon" ohos:element_right="media:icon"ohos:element  
  2. ​    
  3.  ight="media:icon” 
  4. ohos:element_top=“media:icon" ohos:element_bottom="media:icon"ohos:element  
  5. ​    
  6.  ottom="media:icon” 

 3.设置控件的多态化

安卓:

1.在布局中给控件设置:android:background=“@drawable/bt_login”

2.在xml中实现bt_login

  1. <?xml version=“1.0” encoding=“utf-8”?> 
  2. <selector xmlns:android=“http://schemas.android.com/apk/res/android”> 
  3. <!-- 控件点击状态 --> 
  4. <item android:drawable=“@drawable/button_down” android:state_pressed=“true”></item> 
  5. <!-- 控件选中状态 --> 
  6. <item android:drawable=“@drawable/button_down” android:state_checked=“true”></item> 
  7.  
  8. </selector> 

 鸿蒙:

  1. Resource selectResource = context.getResourceManager().getResource(ResourceTable.Media_select); 
  2. Resource emptyResource = context.getResourceManager().getResource(ResourceTable.Media_unselect); 
  3. PixelMapElement selectElement = new PixelMapElement(selectResource); 
  4. PixelMapElement emptyElement = new PixelMapElement(emptyResource); 
  5. StateElement checkElement = new StateElement(); 
  6. checkElement.addState(new int[]{ComponentState.COMPONENT_STATE_SELECTED}, selectElement); 
  7. checkElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, emptyElement); 
  8. component.setButtonElement(null); 
  9. component.setAroundElements(checkElement,null,null,null); 
  10. component.setSelected(true); 

 4.scrollView滚动

安卓:

  1. <ScrollView 
  2. android:layout_width=“match_parent” 
  3. android:layout_height=“match_parent”> 
  4. <LinearLayout 
  5. android:layout_width=“match_parent” 
  6. android:layout_height=“match_parent” 
  7. android:orientation=“vertical”> 
  8. </LinearLayout> 
  9. </ScrollView> 

 鸿蒙:

  1. <ScrollView 
  2. ohos:height=“match_content” 
  3. ohos:width=“match_parent” 
  4. <DirectionalLayout 
  5. ohos:height=“match_content” 
  6. ohos:width=“match_content” 
  7. ohos:orientation=“vertical”> 
  8. </DirectionalLayout> 
  9. </ScrollView> 

5.组件隐藏

安卓:

  1. 不可见: android:visibility=“invisible”; Java代码:view.setVisibility(View.INVISIBLE); 隐藏: android:visibility=“gone”; Java代码:view.setVisibility(View.GONE); 

鸿蒙:

  1. ohos:visibility=“hide”;comp.setVisibility(HIDE);ohos:visibility=“invisible”;comp.setVisibility(INVISIBLE) 

6.线性布局

安卓:

  1. LinearLayout 

鸿蒙:

  1. DirectionalLayout 

7.相对布局

安卓:

  1. RelativeLayout 

鸿蒙:

  1. DependentLayout 

8.帧布局

安卓:

  1. FrameLayout 

鸿蒙:

  1. StackLayout 

9.选项卡

安卓:

  1. TabLayout 

鸿蒙:

  1. TabList和Tab 

10.像素单位

安卓:

  1. dp 

鸿蒙:

  1. vp 

11.控件的对齐方式

安卓:

  1. Gravity.CENTER 

鸿蒙:

  1. LayoutAlignment.CENTER 

12.布局名称及用法

安卓:

  1. RelativeLayout相对布局LinearLayout线性布局 

鸿蒙:

  1. DependentLayout相对布局 DirectionalLayout线性布局 

13.自定义布局

安卓:

  1. View inflate = 
  2. inflate(getContext(), R.layout.reg_view, this); 

 鸿蒙:

  1. component = LayoutScatter.getInstance(context).parse(com.istone.videocache.ResourceTable.Layout_ability_player,layout,false); 
  2. layout.addComponent(component, 0); 

 14.叠加布局,层级叠加

安卓:

  1. FrameLayout 

鸿蒙:

  1. StackLayout 

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2021-03-03 14:17:40

鸿蒙HarmonyOS应用开发

2019-04-10 11:06:54

前端HTMLCSS

2009-06-09 14:40:01

Javascript表单验证

2009-06-11 15:25:39

Java随机数

2009-06-12 10:34:40

Java Date

2013-07-08 15:45:04

Python

2009-06-12 10:08:05

StaticJava

2013-04-08 15:42:38

Backbone.js入门

2018-11-15 14:52:15

Spark数据机器学习

2013-09-24 10:07:19

Ruby项目

2011-08-03 10:12:38

2020-10-11 23:45:55

Python解释器

2009-06-15 13:32:18

Java applet插件

2013-11-14 16:18:05

AndroidAudioAudioTrack

2020-10-10 14:36:10

Python

2018-12-19 09:03:04

物联网供应链物联网应用

2009-07-14 13:49:28

Swing组件AWT

2010-03-11 11:29:51

乔布斯

2020-10-12 00:41:52

Python变量

2021-03-10 15:03:40

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号