版權聲明:本文為部落客原創文章,歡迎大家轉載!
但是轉載請标明出處: 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庫。
- 子產品的綁定擴充卡不能再更改子產品依賴項的擴充卡的行為。綁定擴充卡僅影響其自身子產品中的代碼和其使用者。