鸿蒙Harmony应用开发view-binding插件,和findComponentById说再见

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

[[374602]]

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

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

https://harmonyos.51cto.com/#zz

harmony-view-binding

最新版本:Gitee仓库查看

是什么?

- view-binding for harmony

- 鸿蒙应用开发view-binding插件,消除findComponentById模版代码

- 无注解、编译期间生成Binding类文件

怎么用?

1. 在project根目录的build.gradle文件中引入view-binding的maven仓库地址和classpath

  1. buildscript { 
  2.     repositories { 
  3.         maven { 
  4.             url 'https://mirrors.huaweicloud.com/repository/maven/' 
  5.         } 
  6.         maven { 
  7.             url 'https://developer.huawei.com/repo/' 
  8.         } 
  9.  
  10.         jcenter() 
  11.         maven{ 
  12.             url 'https://dl.bintray.com/eholee/maven' 
  13.         } 
  14.     } 
  15.     dependencies { 
  16.         classpath 'com.huawei.ohos:hap:2.4.0.1' 
  17.         // view-binding 
  18.         classpath 'com.eholee.plugin:view-binding:1.0.1' 
  19.     } 

 2. 在feature模块的build.gradle文件中引入view-binding插件

  1. apply plugin: 'com.huawei.ohos.hap' 
  2.  
  3. apply plugin: 'com.eholee.plugin.view-binding' 
  4.  
  5. ohos { 
  6.  
  7. ... 
  8.  
  9.  
  10. viewBinding{ 
  11.  
  12. enable true 
  13.  
  14.  
  15. dependencies { 
  16.  
  17. ... 
  18.  

 3. 执行gradle sync 即可自动生成ViewBinding类,生成目录在feature中的build/generated/source/viewBinding中,

类的命名方法通过获得xml布局文件名后遵循大驼峰法(Upper Camel Case)并追加Binding后缀,如:MainAbilityBinding

4. 在需要填充布局的地方使用

主要是两个api:1. binding = AbilityMainBinding.parse(this); 2. binding.getRoot()

  1. public class MainAbilitySlice extends AbilitySlice { 
  2.  
  3. private AbilityMainBinding binding; 
  4.  
  5. @Override 
  6.  
  7. public void onStart(Intent intent) { 
  8.  
  9. super.onStart(intent); 
  10.  
  11. binding = AbilityMainBinding.parse(this); 
  12.  
  13. super.setUIContent(binding.getRoot()); 
  14.  
  15. binding.textHelloworld.setClickedListener(new Component.ClickedListener() { 
  16.  
  17. @Override 
  18.  
  19. public void onClick(Component component) { 
  20.  
  21. new ToastDialog(MainAbilitySlice.this).setText("click").show(); 
  22.  
  23.  
  24. }); 
  25.  
  26.  
  27. @Override 
  28.  
  29. public void onActive() { 
  30.  
  31. super.onActive(); 
  32.  
  33.  
  34. @Override 
  35.  
  36. public void onForeground(Intent intent) { 
  37.  
  38. super.onForeground(intent); 
  39.  
  40.  

 可选项

1. 提供设置根布局api

  1. parse(Context context, ComponentContainer parent, boolean attachToRoot)   

2. 支持feature模块view-binding功能的开启与关闭:

feature中的build.gradle中设置

  1. viewBinding{ 
  2.         enable false  
  3.         // false为关闭,插件将不会解析该feature所有的xml布局文件, 
  4.         //true为开启,插件将会解析该feature下所有的xml布局文件 
  5. }  

 3. 支持针对单个xml布局文件开启与关闭view-binding功能

默认是都开启,如需关闭,需在xml根节点中加入如下信息:

  1. xmlns:eholee="http://schemas.eholee.com/viewbinding" 
  2.  eholee:view_binding="false" 
  3.  示例: 
  4.  <?xml version="1.0" encoding="utf-8"?> 
  5.  <DirectionalLayout 
  6.       xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  7.       xmlns:eholee="http://schemas.eholee.com/viewbinding" 
  8.       eholee:view_binding="false" 
  9.       ohos:height="match_parent" 
  10.       ohos:width="match_parent" 
  11.       ohos:background_element="$color:colorAppBackground" 
  12.       ohos:orientation="vertical"
  13.       ... 
  14.   </DirectionalLayout>  

 Gitee仓库地址:https://gitee.com/jeffer_s/harmony-view-binding

参考

1. Android ViewBinding

2. com.huawei.ohos:hap:2.4.0.1 插件api

LICENSE

Apache License 2.0

©著作权归作者和HarmonyOS技术社区共同所有,如需转载,请注明出处,否则将追究法律责任.

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

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

https://harmonyos.51cto.com/#zz

 

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

2009-08-01 08:46:47

2011-12-19 09:36:33

JavaJDKubuntu

2021-01-06 15:07:02

HarmonyOS实践应用开发

2018-05-16 07:48:55

2014-03-24 09:46:32

Pythonweb开发

2013-08-13 14:22:33

开发者微软Windows Pho

2020-04-06 16:52:01

else关键字编程语言

2013-09-16 09:25:55

PureDiscoveDave Copp搜索

2013-07-12 09:28:44

2017-09-12 14:00:10

机器学习深度学习人工智能

2021-11-29 10:50:14

鸿蒙HarmonyOS应用

2019-10-10 10:30:26

MVCModelController

2020-11-09 11:56:49

HarmonyOS

2020-12-29 10:36:34

互联网数据技术

2014-07-14 11:47:03

火狐浏览器

2013-12-20 09:59:34

小米闪购模式雷军

2015-07-20 10:51:09

Win10照片DNA云服务

2020-12-04 09:52:22

鸿蒙OS

2020-09-28 15:13:04

鸿蒙

2022-07-15 12:58:02

鸿蒙携程华为
点赞
收藏

51CTO技术栈公众号