Jetpack之DataBinding,android蓝牙开发教程

DataBinding在xml中数据绑定支持的语法表达式也是非常丰富的,支付在布局文件中使用一下运算符、表达式和关键字:

  • 算术运算符:+ - * / %;
  • 字符串连接运算符:+;
  • 逻辑运算符:&& ||;
  • 二元运算符:& | ^;
  • 一元运算符: + - ! ~;
  • 位移运算符: >> >>> <<;
  • 比较运算符: == > < >= <= (需要被转义);
  • 判断是否是类的实例:instanceof;
  • 分组运算符:();
  • 字面量运算符 - 字符,字符串、数据、null;
  • 类型转换、方法调用;
  • 字段访问;
  • 数组访问: [];
  • 三元运算符:?:;
  • 不支持以下操作:this super new 显示泛型调用。

4.BataBinding如何扩展View属性

我们知道,以前想要给ImageView增加几个属性,必须要写个自定义的ImageView在构造函数中一顿解析。那看看使用DataBinding如何扩展View属性。

public class HiImageView extends ImageView{

//需要使用BindingAdapter注解并标记在public static方法上。
//value中的字段随意添加和方法参数一一对应即可。
@BindingAdapter(value = {“image_url”, “isCircle”})
public static void setImageUrl(PPImageView view, String imageUrl, boolean isCircle) {
view.setImageUrl(view, imageUrl, isCircle, 0);
}
//requireAll = false代表是否以下三个属性在xml中同时使用才会调用到该方法
//为false的话,只要有一个属性被使用就能调用到该方法
@BindingAdapter(value = {“image_url”, “isCircle”, “radius”}, requireAll = false)
public static void setImageUrl(PPImageView view, String imageUrl, boolean isCircle, int radius) {

}
}

//在布局文件中如下使用,便能实现图片圆角和资源Url绑定的功能
<org.devio.as.main.HiImageView

app:image_url ="@{user.avatar}"
app:radius="@{50}">
</org.devio.as.main.HiImageView>

5.DataBinding使用的建议

  • 如fragment_layout_my.xml布局,在编译时会生成FragmentLayoutMyImpl.java实现类,我们可以搜索这种类debug跟进解决问题。

  • 不建议在列表中乱用,因为DataBinding数据绑定是延迟一帧的,如果列表中的ItemView的宽高需要计算后才能正确展示,不建议使用DataBinding操作。否则会看到列表ItemView明显的撑开动画,体验不好。

此处可以使用dataBinding.executePendingBindings()快速渲染布局解决

  • 实体类配合BaseObservable可以友好的解决数据双向绑定的问题。

6.ViewBinding又是什么?

Android Studio更新到3.6之后,多了一个ViewBinding的功能,看到这个名字就感觉和DataBinding很相似,那么它们有什么区别呢?

  • DataBinding可以将View和界面上的数据进行双向绑定,ViewBinding不行,也就是不能再xml中绑定数据,若要使用则需要在Gradle中开启如下配置:

viewBinding {
enabled = true
}

  • 如果你想要实现双向数据绑定,那么可以选择DataBinding;

  • ViewBinding主要是帮我们省却了findViewById的过程,但是它在编译阶段比DataBinding耗时更短;

  • 如果你已经使用了Kotlin,那其实ViewBinding就没必要使用了。

7.DataBinding源码分析

布局文件的加载确认

XML分离后XML文件位置

开发者编写的布局

<?xml versio
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值