近期将会梳理一下JetPack全家桶的使用,包括DataBinding,Room,ViewModel,LiveData,Navigation等。

本来打算先写DataBinding的使用,没想到在17年的时候已经写过了,这里就补充一点吧,毕竟不是什么新东西

  1. Android数据绑定技术一,企业级开发

  2. Android数据绑定技术二,企业级开发

  3. Android  JetPack~ DataBinding(数据绑定)(一)    集成与使用

  4. Android  JetPack~ LiveData (一)   介绍与使用

目录

  1. 介绍
  2. 集成到环境
  3. 在Activity、Fragment中使用
  4. BindingAdapter的使用

介绍

DataBinding(数据绑定)发布于2015年的Google I/O大会,旨在减少Android开发中的大量模板代码,增加代码及逻辑清晰度,提高开发效率和维护效率。

它的好处显而易见

  • 不用再findViewById(),我们直接可以在xml文件进行属性赋值
  • xml中可完成简单的逻辑,如@{ xx==null? a ? b}
  • View与逻辑代码解耦性更高,数据与View双向绑定,只需关注数据变化即可
  • .....

集成到环境

很早的时候是需要加入依赖的,不过现在只需要更新SDK,下载最新的Android Support库即可。下面依赖仅供参考

配置工程的Gradle

android {
…
dataBinding {
enabled = true
}
}

在Activity、Fragment中使用

使Activity支持DataBinding,在布局的最外层加入”<layout>”标签即可,直接加在最外层,不会影响已有的代码。
acty_jpack_layout.xml这个文件名随便起,但是后面会用到(系统会帮我生成ActyJpackLayoutBinding)
<?xml version="1.0" encoding="utf-8"?>
<layout>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="ceshi"/> </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

在Activity的onCreate方法中

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//通过databinding 把activity和view绑定
ActyJpackLayoutBinding mBinding = DataBindingUtil.setContentView(this,R.layout.acty_jpack_layout);
}

在Fragment中onCreateView方法中

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBinding = ActyJpackLayoutBinding.inflate(inflater);
return mBinding.getRoot();
}

哦,对了,系统还提供其他的用法比如说,在ViewHolder中

class MyHolder extends RecyclerView.ViewHolder {
MyBinding binding;
MyHolder(View view) {
super(view);
binding = DataBindingUtil.bind(view);
}
}

要获取View的子View可以通过DataBindingUtil.getBinding(sunView);

BindingAdapter的使用

这个方法很好用,使用场景也很广,比如说业务需要页面中按钮需要点击后缩放,抬起后还原。也可以加载图片时用Glide框架去加载,而我们只需要在xml文件中加一行代码就OK了。好处就是复用性极高,如果要优化图片质量,只需要在ImageBindAdapter中修改,用到的地方自然就成修改后的。

public class ImageBindingAdapter {
@BindingAdapter("imageUrl")
public static void imageUrl(ImageView view, String imageUrl){
RequestOptions options =
new RequestOptions()
.centerCrop()
.dontAnimate();
Glide.with(view)
.load(imageUrl)
.apply(options)
.into(view);
} }

直接在xml文件中使用

<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
app:imageUrl="@{bean.img}"
/>

结束!!!

这篇写的很少,主要是之前写过了,有需要可以结合之前两篇。

下篇Android  JetPack ~LiveData (一)   介绍与使用

Android JetPack~ DataBinding(数据绑定)(一) 集成与使用的更多相关文章

  1. 【Android Jetpack高手日志】DataBinding 从入门到精通

    前言 DataBinding 数据绑定库是 Android Jetpack 的一部分,借助该库可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源.我个人觉得,使用 DataBin ...

  2. 带你了解Android Jetpack

    1.Jetpack主要特性有以下三点: 1.加速开发组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率. 2.消除样板代码Android Jetpack可管理繁琐的Activi ...

  3. Android Jetpack组件

    带你领略Android Jetpack组件的魅力 Android新框架jetpack的内容讲解:Room.WorkManager.LifeCycles.LiveData.ViewModel.DataB ...

  4. 乘风破浪,遇见Android Jetpack之Compose声明式UI开发工具包,逐渐大一统的原生UI绘制体系

    什么是Android Jetpack https://developer.android.com/jetpack Android Jetpack是一个由多个库组成的套件,可帮助开发者遵循最佳做法.减少 ...

  5. 中国移动MM Android/OPhone付费SDK--MMBillingSDK,集成问题总结

    原地址:http://www.j2megame.com/html/xwzx/ty/2916.html 中国移动MM Android/OPhone付费SDK--MMBillingSDK,集成问题总结 近 ...

  6. Android Jetpack之AppCompat(一)

    今天我们来聊一聊有关AppCompat,作为Android Jetpack系列文章的开篇.说到Android Jetpack,我们先看一下这张图: 从图中我们可以看到,整个Android Jetpac ...

  7. Android Jetpack 组建介绍(二)——Lifecycler

    参考Android Jetpack架构组件之 Lifecycle(源码篇) 源码分析 关于Lifecycle的使用考上一篇文章Android Jetpack框架之 Lifecycles(使用篇),从使 ...

  8. Android Jetpack 组建介绍(一)——Lifecycler

    转自带你领略Android Jetpack组件的魅力 Android Jetpack 对于任何一个产品来说,我们开发中都会面对哪些问题?如:产品交互.用户体验.代码结构.数据获取.数据存储.网络优化. ...

  9. Android Jetpack 概述

    Android Jetpack Overview Android Jetpack Jetpack is a set of libraries, tools and architectural guid ...

  10. Android Jetpack - 使用 Navigation 管理页面跳转

    在今年的 IO 大会上,发布了一套叫 Android Jetpack 的程序库.Android Jetpack 里的组件大部分我们都接触过了,其中也有一些全新的组件,其中一个就是 Navigation ...

随机推荐

  1. Web浏览器Linux Shell(shellinabox解决通用区服务器Linux Shell访问很麻烦的问题)

    问题背景 通用区服务器的Linux Shell访问,比较麻烦 需要动态密码(手机上装Token)连跳板机,再用跳板机上的终端工具连Linux Shell 改进方法 使用shellinabox,就能直接 ...

  2. js-day04-作业

    // -------------------------Day04homework 大练习------------------------ #### 练习题1: * 显示用户输入内容 * 要求: 1. ...

  3. 【面试题总结】JVM02:JVM参数调优、类加载机制

    四.JVM参数调优 1.调优工具 (1)jvisualvm:jdk提供的性能分析工具,可以监控java进程,对dump文件分析:查看应用程序的详细信息,针对不同插件,实现监控GC过程.内存.进程.线程 ...

  4. 【实习项目介绍】XXXXX大数据平台介绍

    一.技术架构 1.整体介绍及架构 (1)概述 Odeon大数据平台以全图形化Web操作的形式为用户提供一站式的大数据能力:包括数据采集.任务编排.调度及处理.数据展现(BI)等:同时提供完善的权限管理 ...

  5. 【实时数仓】Day04-DWS层业务:DWS设计、访客宽表、商品主题宽表、流合并、地区主题表、FlinkSQL、关键词主题表、分词

    一.DWS层与DWM设计 1.思路 之前已经进行分流 但只需要一些指标进行实时计算,将这些指标以主题宽表的形式输出 2.需求 访客.商品.地区.关键词四层的需求(可视化大屏展示.多维分析) 3.DWS ...

  6. web框架推导 wsgiref模块 jinja2模板语法 django框架简介 django基本操作

    目录 纯手撸web框架 web框架的本质 手写web框架 存在的问题 基于wsgiref模块 基本介绍 推导流程 代码封装优化 总结 动静态网页 jinja2模块 前端.后端.数据库三者联动 推导流程 ...

  7. Qt开发:Windows 下进程间通信的可行桥梁:窗体消息SendMessage

    Qt开发:Windows 下进程间通信的可行桥梁:窗体消息 注:窗体消息仅适用于有窗口的进程,如果没有窗口是无法收到窗体消息的(哪怕是隐形的都可以),比如Qt中如果需要使用WindowsMessage ...

  8. Go适合做什么?为何这么多人偏爱Go语言?

    Go作为Google2009年推出的语言,其被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言. 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着 ...

  9. java中的静态属性和静态方法

    本文主要讲述java的静态变量和静态方法 静态变量和静态方法,随着类加载完成,而完成,随着类的消失,而销毁. 静态方法只能调用静态变量/方法:普通方法,既能调用静态变量/方法,也能调用非静态变量/方法 ...

  10. (已转)Linux基础第六章 信号

    6.1 前言 本章简单描述信号.信号是Linux系统中,内核和进程通信的一种方式.如果内核希望打断进程的顺序执行,那么内核会在进程的PCB中记录信号.而当这个进程被分配到CPU,进入执行状态时,首先会 ...