鴻蒙Harmony 應用開發view-binding 插件,和findComponentById說再見

2021-01-09 51CTO

想了解更多內容,請訪問:

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

buildscript {     repositories {         maven {             url 'https://mirrors.huaweicloud.com/repository/maven/'         }         maven {             url 'https://developer.huawei.com/repo/'         }          jcenter()         maven{             url 'https://dl.bintray.com/eholee/maven'         }     }     dependencies {         classpath 'com.huawei.ohos:hap:2.4.0.1'         // view-binding         classpath 'com.eholee.plugin:view-binding:1.0.1'     } } 

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

apply plugin: 'com.huawei.ohos.hap'  apply plugin: 'com.eholee.plugin.view-binding'  ohos {  ...  }  viewBinding{  enable true  }  dependencies {  ...  } 

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

public class MainAbilitySlice extends AbilitySlice {  private AbilityMainBinding binding;  @Override  public void onStart(Intent intent) {  super.onStart(intent);  binding = AbilityMainBinding.parse(this);  super.setUIContent(binding.getRoot());  binding.textHelloworld.setClickedListener(new Component.ClickedListener() {  @Override  public void onClick(Component component) {  new ToastDialog(MainAbilitySlice.this).setText("click").show();  }  });  }  @Override  public void onActive() {  super.onActive();  }  @Override  public void onForeground(Intent intent) {  super.onForeground(intent);  }  } 

可選項

1. 提供設置根布局api

parse(Context context, ComponentContainer parent, boolean attachToRoot)   

2. 支持feature模塊view-binding功能的開啟與關閉:

feature中的build.gradle中設置

viewBinding{         enable false          // false為關閉,插件將不會解析該feature所有的xml布局文件,         //true為開啟,插件將會解析該feature下所有的xml布局文件 }  

3. 支持針對單個xml布局文件開啟與關閉view-binding功能

默認是都開啟,如需關閉,需在xml根節點中加入如下信息:

xmlns:eholee="http://schemas.eholee.com/viewbinding"  eholee:view_binding="false"  示例:  <?xml version="1.0" encoding="utf-8"?>  <DirectionalLayout       xmlns:ohos="http://schemas.huawei.com/res/ohos"       xmlns:eholee="http://schemas.eholee.com/viewbinding"       eholee:view_binding="false"       ohos:height="match_parent"       ohos:width="match_parent"       ohos:background_element="$color:colorAppBackground"       ohos:orientation="vertical">       ...   </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

【編輯推薦】

點讚 0

相關焦點

  • 鴻蒙應用開發入門(六):頁面間跳轉
    想了解更多內容,請訪問:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz1.不同的Page直接跳轉,第一個鴻蒙應用例子寫的就是這個,核心代碼:if (button !
  • 如何用 Find That Email 免費谷歌插件開發外貿客戶?
    find that email 尋找外貿客戶聯繫方式對於外貿客戶的聯繫方式挖掘工具,想必同學們是永遠不嫌多的,在之前的實操教程中,Jack老師已經分享了很多款外貿客戶聯繫方式挖掘工具,比方說《外貿客戶開發工具Rocket Reach》、《領英開發客戶工具Skrapp》、《領英客戶開發工具SignalHire》、《領英外貿客戶開發工具
  • 鴻蒙應用開發入門(一):鴻蒙系統的概述
    這種布局讓設備都具有分布式能力,我們可以很輕鬆地讓多設備中的數據、文件在應用中都具有一致性,在一個設備上修改數據,上傳文件,其他設備自動同步,我們應用開發者不在需要去建立設備與設備之間的連接,維護這個連接去進行數據通信,我們只需要用就可以了o((≧▽≦o)!調用手機以外的設備和調用本地設備幾乎沒什麼區別,大大簡化我們的多設備協同的開發難度!贊!
  • 新商標表明華為鴻蒙系統在海外或叫做「Harmony OS」
    2019年6月華為已經為這款即將到來的作業系統申請了多個商標,包括「HongMeng OS」、「HMOS」(鴻蒙的拼音首字母)和「Ark OS」。為此很多人猜測「Ark OS」會成為鴻蒙系統在國際市場上線之後的正式名稱。
  • 從零開始的Android新項目7 - Data Binding入門篇
    Data Binding可以提升開發效率(節省很多以往需要手寫的java代碼),性能高(甚至超越手寫代碼),功能強(強大的表達式支持)。用途去掉Activities & Fragments內的大部分UI代碼(setOnClickListener, setText, findViewById, etc.)
  • 從零開始的Android新項目8 - Data Binding高級篇
    前者可以直接在layout的RV上,設置對應的items和itemView進去,也支持多種view type,還能直接設定對應的LayoutManager。後者類似地,提供了xml中直接綁定RV的items和itemView的功能。相比來說前者的功能更強大一些。
  • 2020徵文-手機【乾貨】鴻蒙應用程式流轉的實現!
    這裡我給大家介紹一下HarmonyOS應用程式流轉的實現。本文中的內容有視頻版哦。在我在51CTO中首發了我的最新免費的視頻教程《精講鴻蒙應用程式開發》就有相關的內容。歡迎大家觀看,並提出寶貴的意見:https://edu.51cto.com/course/26138.html下面進入正題:1 什麼是應用程式的協同和流轉?首先,什麼是應用程式的流轉和協同呢?應用流轉和協同是鴻蒙作業系統分布式的重要體現。
  • 2020徵文-TV10分鐘鴻蒙應用實戰開發:鴻蒙手繪板 (含原始碼)
    想了解更多內容,請訪問:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz前言:本篇旨在通過實踐一些樣例,讓開發者們快速提高腎上腺素,歡樂的加入鴻蒙應用開發之旅。整篇就是一個完整的實操樣例,我也儘量在一片中把內容都講清楚。
  • 華為鴻蒙英文不是 Hongmeng OS?餘承東:拼音鴻蒙太難發音,Harmony...
    IT之家8月9日消息 2019華為開發者大會於8月9日-8月11日舉行,華為消費者業務CEO、華為技術有限公司常務董事餘承東以《全場景時代新體驗與新生態》為題發表演講,正式宣布發布自有作業系統鴻蒙,並宣布鴻蒙OS開源。與此同時,在會上,餘承東宣布,華為鴻蒙系統將兼容Linux、Unix和安卓系統。
  • 鴻蒙HarmonyOS2.0發布會現場回憶錄
    王成錄提出,不斷重複的應用開發與硬體迅速頻繁創造、更新之間存在矛盾關係,系統與設備碎片化導致消費者學習成本升高,冗餘功能重複安裝,嚴重阻礙了萬物互聯時代的業務創新。目前應用的流量增長遇到瓶頸,需要有更多入口和更好的用戶體驗。Harmony OS可以運行在所有硬體之間,幫助開發者開啟萬物互聯。
  • 華為鴻蒙手機,12月發布!
    UX、可視可說AI賦能語音交互、開發者開源等,為想像加上翅膀,成為生態建設的強力引擎。 鴻蒙官網: harmonyos.com 鴻蒙 OS 開源項目: openatom.org/openharmony 鴻蒙 OS 代碼倉庫: openharmony.gitee.com
  • 「鴻蒙」作業系統關鍵特性解讀
    說實話,這四大技術特性,對於非專業IT人士而言,可能大致能明白其表達的核心意思,但對於其背後的體現的IT內涵和程序模塊間的邏輯關係,可能並不一定有多理解。而這些也正是鴻蒙OS相比其他作業系統的不同或者說優勢所在。
  • 玩轉Confluence插件開發-使用信息橫幅顯示頁面相關信息(13)
    上一節介紹了一些開發過程中涉及到的常用命令。這一節我來為您介紹怎樣使用信息橫幅顯示頁面相關信息。在本教程中,我會創建一個插件項目,這個插件會將頁面的一些統計信息(贊,評論和版本)插入到信息標題中,我們通過單擊按鈕將打開一個對話框的方式去展現它。這篇文章中涉及的代碼我已經放到github[1]中,地址在文章的最下方,如果有需要可以自行獲取。
  • 【開發實錄】在鴻蒙開發板上使用Websocket(移植自librws庫)
    想了解更多內容,請訪問:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zzlibrws: Tiny, cross platform基礎:完成官方的快速入門教程雖然在web雙向通信中,除了使用ajax(單向輪詢)外,一般都推薦websocket,但網上關於websocket的實現代碼很少,而且大部分為js和java,很少有C語言。因為課程項目開發需要使用到websocket,就在網上尋找了挺久的,終於找到了這個庫。
  • Vue 開發必須知道的 36 個技巧
    2.2.0 新增描述:provide 和 inject 主要為高階插件/組件庫提供用例。並不推薦直接用於應用程式代碼中;並且這對選項需要一起使用;以允許一個祖先組件向其所有子孫後代注入一個依賴,不論組件層次有多深,並在起上下遊關係成立的時間裡始終生效。
  • 華為歐洲註冊Harmony商標或是鴻蒙系統官方譯名 中文:和諧融洽
    既然該商標與作業系統有關,由此網間傳言,華為此次在歐洲註冊的Harmony商標,很可能是鴻蒙在部分國外地區的官方名稱或是鴻蒙在國際市場上的最終代號。眾所周知,華為在2019年6月曾經為鴻蒙系統申請了多個商標,包括「HongMeng OS」、「HMOS」(鴻蒙的拼音首字母)和「Ark OS」。「鴻蒙」則有可能只是這款作業系統在國內的專用稱呼。
  • 【實戰】Android Data Binding從牴觸到愛不釋手
    2.2 Android Data Binding如果使用了Android Data Binding,那麼View的定義、find、判空這些都不用寫了,如何做呢?非常簡單,自動生成了getter和setter,在完成set操作後,調用執行notifyPropertyChanged和super.requestRebind()notifyPropertyChanged
  • 鴻蒙系統特性「揭曉」!一次開發靈活使用,生態構建難題被解決?
    不久前,華為公共事務高級副總裁Joy Tan在接受媒體採訪時就向外界透露了鴻蒙系統的最新消息,同時也揭曉了鴻蒙系統的特性。而在應用的開發上,華為的副總裁闡述了鴻蒙系統跟安卓以及iOS手機作業系統所不同的地方。根據她的說法,應用開發商只需要進行一次應用開發,就可以靈活地將應用部署到多個不同的華為終端設備上。也就是說,開發者只需一次開發,就能讓應用在多個不同的華為終端上設備進行使用,這樣無疑能極大程度的減輕應用開發者的負擔。
  • (收藏)3大維度16個核心知識點,快速讀懂鴻蒙2.0
    2.0實現了藍牙和WiFi兩個異構網絡設備互相之間的可見,更多設備在使用不同通訊方式的同時,仍然能夠互相連通,這對上層應用的體驗至關重要。鴻蒙2.0跨設備之間的數據讀取比安卓Content Provider同設備內不同應用之間的數據讀取還要快1.3倍。
  • 2020徵文-開發板鴻蒙liteos-a如何啟動第一個用戶進程Init_lite
    想了解更多內容,請訪問:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz1.鴻蒙OS編譯知識OpenHarmony源碼編譯系統使用了google開發的gn工具以及ninjia。這二者結合起來比傳統的makefile編譯系要高效,尤其適合大系統的並行編譯。對開發者而言,如果要參與OpenHarmony的開發,需要對gn的語法有些了解。