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值:

如果只需要在项目的设计阶段显示默认值,则可以使用工具属性而不是默认表达式值,如“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库。
  • 模块的绑定适配器不能再更改模块依赖项的适配器的行为。绑定适配器仅影响其自身模块中的代码和其使用者。

 

你可能感兴趣的:(Android,Architecture,Component,Android开发相关,Android,Architecture,Component)