于今腐草无萤火,终古垂杨有暮鸦。这篇文章主要讲述Android开发教程 - 使用Data Binding使用BindingAdapter简化图相关的知识,希望能为你提供帮助。
什么是BindingAdapterBindingAdapter用来设置布局中View的自定义属性,当使用该属性时,可以自定义其行为。
下面是一个简单的例子:
@BindingAdapter("android:bufferType")
public static void setBufferType(TextView view, TextView.BufferType bufferType) {
view.setText(view.getText(), bufferType);
}
当一个方法加上@BindingAdapter注解后,就定义了一个BindingAdapter,注意方法的第一个参数是需要绑定到的View,第二个参数是绑定的属性值。
当定义完成后,此时我们就可以在布局的View中使用该属性,举例如下:
<
TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:bufferType="normal"
/>
当TextView中加入了android:bufferType=" normal" 后,setBufferType()方法就会被调用。
当自定义其它一些属性时,也遵循一样的规则。
自定义图片加载的BindingAdapter由于BindingAdapter的特性,我们就可以为ImageView自定义一个BindingAdapter,从而大幅简化图片加载的过程。
第一步,我们先新建一个ImageBindingAdapter的类,图片相关的BindingAdapter可以都定义在这个类里面:
public class ImageBindingAdapter {@BindingAdapter("imageUrl")
public static void bindImageUrl(ImageView view, String imageUrl){
RequestOptions options =
new RequestOptions()
.centerCrop()
.dontAnimate();
Glide.with(view)
.load(imageUrl)
.apply(options)
.into(view);
}}
定义好后,我们就可以直接在布局中使用这个属性了:
<
ImageView
android:layout_width="180dp"
android:layout_height="180dp"
app:imageUrl="@{user.photo}"
/>
仅仅简单的一行代码,就可以进行网络图片的加载了,是不是感觉这个世界简单了很多?
除了这种单个参数的BindingAdapter,它也支持多个参数,这也是BindingAdapter强大的地方。
总结【Android开发教程 - 使用Data Binding使用BindingAdapter简化图】使用BindingAdapter可以大大简化一些重复代码,本文主要介绍了加载图片上的使用,你可以举一反三,用在更多的场景中使用,比如加载列表的数据等,这样做以后也可以使您的代码更加清晰高效。
推荐阅读
- Android dependency has different version.You should manually set the same version via DependencyReso
- Android开发教程 - 使用Data Binding使用自定义Interface
- Android国际化-图片国际化和文本字符国际化
- 使用H5搭建webapp主页面
- android jni控制gpio (rk3288)
- [译]Android view 测量布局和绘制的流程
- eclipse java项目转idea java项目Invalid bound statement (not found): com.mapper 报错问题
- vsphere6.0故障(关于vCenter Appliance6.0磁盘爆满和WEB503错误问题)
- Django --- Django下载和APP创建ORM (大概步骤)