美文网首页
框架组件(二)Data Binding 1-起步

框架组件(二)Data Binding 1-起步

作者: HelloBird_ | 来源:发表于2018-11-23 10:50 被阅读0次

    该系列文章是对Android推出的架构组件相关文章,按作者自己理解来翻译的,同时标记有作者自己一些简单笔记。如果读者发现文中有翻译不准确的地方,或者理解错误的地方,请不吝指教。

    源自Google官方
    Data Binding Library
    一文的翻译与归纳

    其他相关链接:
    Android Jetpack Components

    [TOC]

    前言

    Data Binding 库是一个 support library,允许你通过声明的方式将数据绑定到 UI 组件,而不是通过编码的方式。

    我们通常会将控件定义在 activity 中来调用 UI 框架方法。举个例子,以下代码展示了通过 findViewById() 方法来找到 TextView 控件,并将 viewModeluserName绑定到该控件上。

    TextView textView = findViewById(R.id.sample_text);
    textView.setText(viewModel.getUserName());
    

    下面的列子展示了如何使用 Data Binding 库直接给布局文件中的控件设置文本。而这个过程不需要编写任何Java代码,请注意复制表达式使用 @{} 语法:

    <TextView
        android:text="@{viewmodel.userName}" />
    

    起步

    学习如何让你的开发环境集成 Data Binding 库,以及 Android Studio 配置 Data Binding 库的代码。

    Data Binding 是一个灵活且兼容的支持库,所以在4.0(API 14)及以上版本都可以使用它。

    我们推荐使用最新的 Android Gradle 插件,但是 Data Binding 库支持1.5.0以上版本。这里可以获取关于如何更新 Android Gradle 插件的信息。

    Build 环境

    为了使用 data binding ,我们需要在 Android SDK Manager 中下载 Support Repository 相关库。

    需要在 app 模块的 build.gradle 中添加 dataBinding 节点,表明应用使用 data binding。如下例子所示:

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

    注意:如果你的 app 依赖的库使用了 data binding,那么你必须为 app 模块配置 data binding,即使你的 app 模块没有直接使用 data binding。

    Android Studio 对 data binding 的支持

    Android Studio 支持许多用于编辑 data binding 代码的功能。以下是几个主要功能的说明:

    • 语法高亮
    • 标记表达式语言语法错误
    • XML代码自动补全
    • 引用提示和快捷文档

    布局编辑器中预览面板显示 data binding 表达式中提供的默认值。在下面例子中,预览面板将在 TextView 中显示 my_default 的值。

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

    如果你只需要在项目设计阶段显示默认值,你可以使用 tools 属性替代表达式默认值,可以参考 Tools Attributes Reference

    用于绑定类的新 data binding 编译器

    3.1.0-alpha06 版本的 Android Gradle 插件包含一个新的 data binding 编译器来生成绑定类。新的编译器增量创建绑定类,提升了build处理速度。更多关于绑定类的信息,可以参考生成的绑定类

    以前版本 data binding 编译器在编译代码的同一步骤中生成绑定类,可能会由于未找到绑定类的错误,导致你的代码编译失败。新的 data binding 编译器会在构建应用前生产绑定类,从而避免了这些错误。

    要使用新的 data binding 编译器,需要在gradle.properties中添加如下配置:

    android.databinding.enableV2=true
    

    你也可以通过以下参数在gradle命令中启用新编译器:

    -Pandroid.databinding.enableV2=true
    

    注意:Android 插件3.1 版本中新 data binding 编译器不向后兼容。你需要手动启用此功能来利用增量编译生成所有绑定类。但是,Android 插件3.2中的新编译器与先前版本生成的绑定类兼容,3.2版本默认使用新的编译器。

    启用新编译器后,会有以下几点变化:

    • Android gradle 插件会在编译你的代码之前生成为你的布局生成绑定类。
    • 如果一个布局包含在多个资源配置中,data binding 库使用android.view.View作为共享相同ID的默认类型,而不会用view 类型。
    • module 的绑定类会被编译到相应的 aar 文件中。依赖 module 的 app 不再需要重新生成绑定类。
    • 一个模块的绑定适配器不能更新所依赖模块的适配器行为。绑定适配器只影响自身模块与模块使用者的代码。

    相关文章

      网友评论

          本文标题:框架组件(二)Data Binding 1-起步

          本文链接:https://www.haomeiwen.com/subject/udndqqtx.html