天天看點

Android Architecture Component Data Binding Library (二) 開始內建

版權聲明:本文為部落客原創文章,歡迎大家轉載!

但是轉載請标明出處: https://blog.csdn.net/t000818/article/details/84667772,本文出自:【唐宏宇的部落格】 

Data Binding 庫是可以讓我們使用聲明性格式而不是以程式設計方式将布局中的UI元件綁定到應用中。

下面将會介紹如何在開發環境中內建使用Data Binding庫,包含在Android Studio中的編寫Data Binding代碼。

Data Binding庫提供了高度的靈活性和相容性 ,是以可以将其用于Android 4.0(API級别14)或更高版本的裝置。

建議在項目中使用最新的Gradle Android插件。但隻有1.5.0版本及更高版本支援Data Binding。有關更多資訊,請參閱如何更新Gradle的Android插件。

建構環境

在開始使用Data Binding之前,請先從Android SDK管理器裡的Support Repository下載下傳支援庫。有關更多資訊,請參閱更新IDE和SDK工具。

要将應用程式配置為使用資料綁定,請将dataBinding元素添加到app子產品中的build.gradle檔案中,如以下示例所示:

android {
    ...
    dataBinding {
        enabled = true
    }
}
           

注意: 即使App子產品不直接使用Data Binding,  也必須為依賴于使用Data Binding的庫的App子產品,配置Data Binding。

Android Studio 對Data Binding 的支援

Android Studio支援許多用于Data Binding代碼的編輯功能。例如,它支援Data Binding表達式的以下功能:

  • 文法高亮顯示
  • 标記表達式語言文法錯誤
  • XML代碼自動補全
  • 參考,包括導航(例如導航到聲明)和快速幫助文檔
  • 警告:數組和泛型類型(如Observable類)可能會不準确地顯示錯誤資訊。

布局編輯器中的“預覽”窗格顯示Data Binding定表達式的預設值。例如,“預覽”窗格在以下示例中聲明的TextView小部件上顯示my_default值:

<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{user.firstName, default=my_default}"/>
           

如果隻需要在項目的設計階段顯示預設值,則可以使用工具屬性而不是預設表達式值,如“tools屬性參考”中所述。

用于生成綁定類的新Data Binding編譯器

android gradle 插件版本 3.1.0-alpha06 包含一個 用于生成綁定類的新版Data Binding編譯器。新的編譯器以增量方式建立綁定類, 這在大多數情況下加快了生成過程。若要了解有關綁定類的詳細資訊, 請參閱生成的綁定類. 

 以前版本的Data Binding編譯器在編譯代碼的同一步驟中生成綁定類。如果托管代碼無法編譯, 您可能會收到多個錯誤, 報告找不到綁定類。新的Data Binding編譯器通過在編譯器生成應用之前生成綁定類來防止這些錯誤. 

 要啟用新的資料綁定編譯器, 請将以下選項添加到格拉特. 屬性檔案中: 

android.databinding.enableV2=true

還可以通過添加以下參數在分級指令中啟用新的編譯器: 

-Pandroid.databinding.enableV2=true

注意: 在android 3.1版插件中,新的Data Binding編譯器不會向後相容。你需要在啟用此功能以實作增量編譯,生成所有綁定類 。但是, android 插件3.2 版中的新編譯器與以前版本生成的綁定類相容。預設情況下3.2 版會自動啟用新編譯器. 

 當啟用新的Data Binding編譯器時, 将導緻App會有以下變更: 

  • 在編譯代碼之前,Android Gradle插件會為布局生成綁定類。
  • 如果一個布局被inlude在多個目标資源配置中,則Data Binding庫将使用android.view.View作為其中所有view的預設類型,而不是view的原類型。并且共享相同資源ID。
  • Library子產品中的綁定類,會被編譯并将其一起打包到相應的Android Archive(AAR)檔案中。依賴于這些庫子產品的應用App子產品不再需要重新生成綁定類。有關AAR檔案的更多資訊,請參閱建立Android庫。
  • 子產品的綁定擴充卡不能再更改子產品依賴項的擴充卡的行為。綁定擴充卡僅影響其自身子產品中的代碼和其使用者。

繼續閱讀