首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Jetpack】DataBinding 架构组件 ④ ( 使用 @BindingAdapter 注解为布局组件绑定自定义逻辑 | 网络图片加载 | 本地图片加载 )

, 传入一个 url 网络图片地址 , 在该组件显示网络图片 , 如果网络图片加载失败或者为空 , 则加载默认本地资源 ; 上述操作必须 自定义一段代码逻辑进行实现 , 使用简单数据绑定无法实现该功能...; 2、使用 @BindingAdapter 注解为布局组件绑定自定义逻辑 首先 , 启用 DataBinding , 在 DataBinding 数据绑定 布局 引入 绑定数据模型 ;...属性值 对应 ; 二、使用 @BindingAdapter 注解绑定加载网络图片静态方法 ---- 在 DataBinding 布局 , 绑定数据模型 ; <variable..., 其中注解参数 image 对应组件 app:image 属性 ; imageView: ImageView 参数是 DataBinding 布局绑定组件 ; url: String...: ImageView 参数是 DataBinding 布局绑定组件 ; url: String 参数是 DataBinding 布局绑定数据模型 ; <variable

94840
您找到你想要的搜索结果了吗?
是的
没有找到

【错误记录】Android Studio 编译报错 ( To use data binding annotations in Kotlin, apply the ‘kotlin-kapt‘ plu )

文章目录 一、报错信息 二、kotlin-kapt 插件简介 三、解决方案 一、报错信息 ---- 在 Android Studio 开发 DataBinding , 使用 如下代码开发 绑定适配器...加载网络图片 : import android.widget.ImageView import androidx.databinding.BindingAdapter class ImageViewBindingAdapter...: String) { } } } 在 Kotlin , 实现静态函数 , 需要 在 companion object 伴生对象 , 使用 @JvmStatic 注解 ,...插件 是 Kotlin 编译器插件一种 , 其作用是在编译时处理 注解 ; 借助 kotlin-kapt 插件 可以 在编译时 基于 注解 生成代码 , 如 : 在 DataBinding ,...使用生成代码将数据模型绑定到布局文件 ; 三、解决方案 ---- 在 Module 模块下 build.gradle 构建脚本 , 添加 kotlin-kapt 模块 , 这是 Kotlin 注解模块

64930

DataBinding最全使用说明

之类 findById只是他一个小小辅助功能而已, 我推荐使用Kotlin来解决这个需求; Databinding大部分情况下错误提示很完善, 个别XML书写错误也易于排查 我想强调是Xml...业务逻辑应该尽量在Model ViewModel属于DataBinding自动生成类 MVP对比MVVM劣势 MVP通过接口回调实现导致代码可读性差, 阅读顺序不连贯 MVP无法实现双向数据绑定...注意不能使用字符串android, 否则会报错无法绑定. class 标签有个属性可以自定义DataBinding生成类名以及路径 <!...后面的数据绑定提到. @BindingAdapter 创建一个XML属性函数, 然后在属性中进行设置数据操作会进入该函数. 图片加载框架可以方便使用此方法....需要作为字段常量来使用 函数回调 DataBinding还支持在XML绑定函数参数类型, 并且还是Lambda高阶函数类型, 这点比Java还先进.

2K20

Android 使用ContentProvider扫描手机图片,仿微信显示本地图片效果

今天我这篇文章使用是LruCache这个类(之前写了一篇使用LruCache加载网络图片Android 异步加载图片使用LruCacheSD卡或手机缓存,效果非常流畅)以及对图片进行相对应裁剪...接下来我们就来实现这些效果吧,首先我们新建一个项目,取名ImageScan 首先我们先看第一个界面吧,使用将手机图片扫描出来,然后根据图片所在文件夹将其分类出来,并显示所在文件夹里面的一张图片和文件夹图片个数...,我们先要将图片按照文件夹进行分类,我们使用了HashMap来进行分类并将结果存储到mGruopMap(Key是文件夹名,Value是文件夹图片路径List),分类完了关闭Cursor并利用Handler...,对于大图片加载也是比较耗时,所以采用子线程方式去加载,对于图片缓存机制使用是LruCache,使用手机分配给应用程序内存1/4用来缓存图片,除了使用LruCache缓存图片之外,还对图片进行了裁剪...Bitmap,不存在就开启子线程去读取,为了方便管理加载本地图片线程,这里使用了线程池,池中只能容纳一个线程,读取完了本地图片先将Bitmap加入到LruCache,保存Key为图片路径,然后再使用

3.6K20

Android图片大小屏幕密度关系讲解

Android手机适配是非常让人头疼一件事,尤其是图片android为了做到是适配提供了很多文件夹来存放不同大小图片,比如:drawable-ldpi、drawable-mdpi、drawable-hdpi...、drawable-xhdpi、drawable-xxhdpi等,其实同一张内容图片放到上面不同文件夹是有区别的,可能你会问:如果在上述各个文件夹中都放置一张内容相同,尺寸不同图片,那么系统会选择加载哪一张图片呢...不同设备有不同显示效果,这个设备硬件有关,一般我们为了支持WVGA、HVGAQVGA 推荐使用这个,不依赖像素。 dp: dip是一样 px: pixels(像素)....,TextView 字号最好使用 sp 做单位,而且查看TextView源码可知Android默认使用sp作为字号单位。...图片放在drawable,等同于放在drawable-mdpi,原因为:drawable目录不具有屏幕密度特性,所以采用基准值,即mdpi 图片放在某个特定drawable,比如drawable-hdpi

1K60

Jetpack组件之DataBinding

; 数据绑定 如何将数据传递到布局文件呢?首先,在布局文件定义布局变量,指定对象名字类型,当然数据操作在标签里。...DataBinding具有Null校验,如果绑定值为null,则分配默认值null,如果类型为int,默认值为0。 表达式语言 在布局可以包含简单数据逻辑,可以使用以下运算符关键字。...在二级页面,我们需要定义一个一级页面相同布局变量,用于接收传递过来数据。然后就可以使用book进行数据绑定了。...以静态方法形式为UI控件各个属性绑定了相应代码逻辑,如果在UI控件属性使用了布局表达式,那么当布局文件渲染时,绑定静态方法自动被调用。...自定义BindingAdapter 在项目开发,经常使用ImageView来加载网络图片,但是在布局文件不能设置图片url,我们可以使用BindingAdapter来解决这个问题。

1.2K20

MVVM框架搭建(二)——项目搭建

] 创建各个依赖库版本号控制,需在类库名称后增加‘_version’ * * [类库maven地址] 创建各个类库maven地址,同一类库需要引用多个类时,可以使用数组,要确保类库引用不重复...* * [项目依赖列表] 创建可以直接让module引用依赖列表,以Deps结尾,原则上以类库功能分类,比如网络库,图片处理库 * 尽量不要以类库本身名字命名依赖列表 * * 各个module...引用类库时尽量使用项目依赖列表项目,不要直接使用类库地址项目 * * 需要添加新类库时,先查询本列表项目中是否已引用类似功能类库,尽量不要添加重复功能类库 */ project.ext...之前用MVP重新写框架,但是也遇到了很多不方便地方,所以这次我们着重介绍MVVM框架 这里开始使用kotlin,并遵循googleApp开发架构指南,才找到一种较好构建MVVM应用程序方式...相比于MVP,MVVM没有多余回调,利用Databinding框架就可以将ViewModel数据绑定到UI上,从而让开发者只需要更新ViewModel数据,就可以改变UI。

1.3K20

Android Jetpack架构组件(八)之DataBinding

2.3 绑定布局 没有使用DataBinding时候,为了将XML布局文件与Activity进行绑定,需要调用ActivitysetContentView()方法,或者是在Fragment调用LayoutInflate...如果使用DataBinding之后,就需要使用DataBindingUtil类来进行视图绑定,如下所示。...但是如果一个布局文件中使用DataBinding,同时也使用了include标签,那么如何使用nclude标签引入布局文件数据呢。...使用RcyclerView,就需要用到Adapter,在Adapter实例化Item布局,然后将List数据绑定到布局,而DataBinding就可以帮助开发者实例化布局并绑定数据。...首先,定义一个新属性,将数据List直接通过DataBinding在布局文件绑定,并且将这些操作都封装到BindindAdapter,Activity不再需要设置LayoutManagerAdapter

2K20

【Jetpack】DataBinding 架构组件 ② ( 字符串拼接函数 | 绑定点击事件函数 | DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 )

文章目录 一、字符串拼接函数 二、绑定点击事件函数 三、DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 1、DataBinding 布局中使用 import 标签导入...Java 类 2、DataBinding 布局中使用 import 标签导入 Kotlin 类 四、完整代码示例 1、数据类 2、导入 Java 类 3、导入 Kotlin 类 4、DataBinding...---- 在 DataBinding 布局 , 如果想要为 View 组件绑定点击事件 , 需要绑定参数为 View 类型 , 返回值 void 函数即可 ; 在 Student 类定义如下函数...布局中使用 import 标签导入 Java、Kotlin 类 ---- 除了将 字符串拼接 函数定义在 传入 Student 对象之外 , 还可以 定义在任意类 静态方法 ; 注意 : 只能在...布局文件 在布局文件 , 导入 Student 对象 , 定义了静态函数类 ; 绑定点击事件 : android:onClick="@{student.onClick}" 拼接字符串 : android

55350

Google 推荐在 MVVM 架构中使用 Kotlin Flow

使用 使用 Coil 加载图片 使用 ViewModel、LiveData、DataBinding 协同工作 使用 Motionlayout 做动画 App Startup 与 Hilt 使用 增加...Google 推荐在 MVVM 使用 Kotlin Flow Google 推荐在 MVVM 中使用 Kotlin Flow我相信如今几乎所有的 Android 开发者至少都听过 MVVM 架构,在...数据 DataBinding(数据绑定) 在 PokemonGo 项目中使用DataBinding 进行数据绑定。...DataBinding(数据绑定)实际上是 XML 布局另一个视图结构层次,视图 (XML) 通过数据绑定层不断地与 ViewModel 交互,如下所示: PokemonGo/app/src/main... 这是获取神奇宝贝详细信息,通过 DataBinding 以声明方式将数据(神奇宝贝体重)绑定到界面上,更多使用参考项目中代码。

4.1K20

【Jetpack】DataBinding 架构组件 ( 数据绑定技术简介 | Android DataBinding 数据绑定 | 启动数据绑定 | 定义数据类 | 布局文件转换 )

文章目录 一、数据绑定技术简介 二、Android DataBinding 数据绑定技术 三、Android DataBinding 代码示例 1、build.gradle 构建脚本 -...UI 界面 与 数据模型 , 在各个平台都有该技术应用 , 如 Android , Angular , React 等框架中都使用了 数据绑定技术 ; 数据绑定 DataBinding 将 数据模型...更加简洁 , 容易理解 , 提高工程性能可维护性 ; 二、Android DataBinding 数据绑定技术 ---- Android DataBinding 组件 可以将 Layout...组件 ; 使用 DataBinding 可以在 Android 布局文件 , 承担部分 Activity 组件工作 , 减少传统方式用法 耦合度 ; 如 : 想要将 数据设置到 TextView...、定义数据类 定义 普通 Kotlin 数据类型 , 其中封装了 var name: String var age: Int 两个变量 ; package kim.hsl.databinding_demo

1.2K20

Android:Jetpack之视图绑定——ViewBinding

网上盛传一张将Jetpack组件分为四大类老图: [ccb3ca1a1b81bc8a21cf46a48db4212d.png] 图片来源: Use Android Jetpack to Accelerate...Data Binding→数据绑定,可使用声明式将布局界面组件绑定到应用数据源; Lifecycles→生命周期感知,可感知响应ActivityFragment生命周期状态变化; LiveData...Kotlin特性为Android、Jetpack提供一些简易易用扩展; Multidex→ 为具有多个Dex文件应用提供支持; Test→ 用于单元运行时界面测试 Android 测试框架; Benchmark...实际开发,也是这部分组件用得多一些,Jetpack库可单独使用,也可以组合使用,开发者可按需选择。...普及,带来了扩展创建kotlin-android-extensions(KAE),直接拿id当控件用,原理: 类定义一个存储控件引用HashMap,id为key,控件实例为value,当用到控件时,

1.2K30

Android:Jetpack之视图绑定——ViewBinding

网上盛传一张将Jetpack组件分为四大类老图: [ccb3ca1a1b81bc8a21cf46a48db4212d.png] 图片来源: Use Android Jetpack to Accelerate...Data Binding→数据绑定,可使用声明式将布局界面组件绑定到应用数据源; Lifecycles→生命周期感知,可感知响应ActivityFragment生命周期状态变化; LiveData...Kotlin特性为Android、Jetpack提供一些简易易用扩展; Multidex→ 为具有多个Dex文件应用提供支持; Test→ 用于单元运行时界面测试 Android 测试框架; Benchmark...实际开发,也是这部分组件用得多一些,Jetpack库可单独使用,也可以组合使用,开发者可按需选择。...普及,带来了扩展创建kotlin-android-extensions(KAE),直接拿id当控件用,原理: 类定义一个存储控件引用HashMap,id为key,控件实例为value,当用到控件时,

1K30

【Jetpack】DataBinding 架构组件 ⑥ ( RecyclerView 数据绑定 )

一、RecyclerView 数据绑定核心要点 1、启用数据绑定 / 导入依赖 在 RecyclerView , 如果要使用 DataBinding 架构组件进行数据绑定 , 首先要 启用 DataBinding..., 并 导入 RecyclerView 依赖 , 在 Module 模块下 build.gradle 构建脚本 , 配置如下内容 : android { // 启用 DataBinding 数据绑定...---- 1、build.gradle 构建脚本 ( 启用数据绑定 / 导入依赖 ) 在 Module 模块下 build.gradle 构建脚本 , 主要是 启用 DataBinding ;...DataBinding ) Activity 组件布局 可以使用 数据绑定 , 也可以不使用 , 该布局没有绑定数据 ; 使用DataBinding 布局 : 在布局中使用 DataBinding...布局 , 绑定了 kim.hsl.databinding_demo.Student 类型数据 , 在 TextView 显示该绑定数据类对象 name age 字段 ; <data

63820

【Jetpack】DataBinding 架构组件 ⑤ ( 数据模型与视图双向绑定 | BaseObservable 实现双向绑定 | ObservableField 实现双向绑定 )

一、数据模型 Model 与视图 View 双向绑定 ---- 1、数据模型 Model 与视图 View 单向绑定 在之前博客 , 将 数据模型 Model 指定 Field 字段 绑定到...使用 DataBinding 前 , 必须启用数据绑定 , 在 Module 下 build.gradle 构建脚本 , 在 " android / defaultConfig " 层级 , 配置...插件 凡是 在 Kotlin使用到注解情况下 , 都需要导入 kotlin-kapt 插件 ; 在 Module 下 build.gradle 构建脚本 , 导入 kotlin-kapt 插件...; plugins { id 'kotlin-kapt' } 3、数据模型类 数据类 , 主要 封装 数据模型 ; package kim.hsl.databinding_demo class...) } 实现一个 getXxx 函数 , 使用 @Bindable 注解修饰该函数 , 同时 在 DataBinding 布局 , 为 EditText 组件设置值时 , 也使用该函数设置值

1.3K30

Android基于DataBinding+Koin实现MVVM模式页面快速开发框架

前言 上一篇介绍了 ardf(android rapid development framework,Android 快速开发框架) 基于 DataBinding 对 RecyclerView 封装实现使用...本篇是 ardf第二篇,将介绍基于 DataBinding + Koin 实现 MVVM 模式页面快速开发框架使用详细实现。...Android基于DataBinding封装RecyclerView实现快速列表开发 DataBinding 是 Google 官方一个数据绑定框架,借助该库,您可以声明式将应用数据源绑定到布局界面组件上...Koin 无反射、无代码生成且使用更简单;借助该库可轻松在基于 kotlin Android 应用开发实现依赖注入,降低代码耦合性。...ViewModel 实现 在 MVVM 模式开发,一般是通过 DataBinding 将布局与 ViewModel 绑定使用,ViewModel 数据变化自动刷新界面,实现数据驱动 UI 刷新

1.4K20

堪比阿里插件Android Studio插件集合(IDE通用)(下)

2)在Android Studio设置界面,对在当前类是否强制初始化提供了默认值设置,这样就可以让插件使用更符合自己操作习惯。 ?...otto-intellij-plugin使用2 databinding-support 一个可以快速实现databinding插件,自从谷歌推出databinding框架以来,有不少人都在使用这个框架开发...(它是Android Studio自带.gitignore功能增强扩展) ? ignore 使用1 ? ignore 使用2.gif ?...输入api key 3..选择图片,可以选择图片,或者选择文件夹或者同时选中,反正是遍历文件夹下图片,筛选jpgpng ,key剩余次数 ? 选择图片 4.查看压缩进度 ?...,用于测试在模拟器Android设备上原生混合移动应用程序。

2.5K20

Android 使用View Binding方法详解

之前我们与视图交互方式有findViewById、kotlin引入Android Kotlin Extensions后直接通过id进行访问。前者模板化严重,重复代码多;后者最为方便。...与databinding区别:databinding仅处理使用 <layout 代码创建数据绑定布局;View Binding不支持布局变量或布局表达式,因此它不能用于在xml中将布局与数据绑定。...与Android Kotlin Extensions区别:在使用上,后者简单粗暴,直接id进行访问,而View Binding需要创建绑定实例;后者有一些不友好地方,比如相同id存在于多个xml...也应该避免这种场景,毕竟类生成过多会影响build速度增加安装包体积) 与Android Kotlin Extensions进行选择,目前来看,无最优解,二者都很好,取决于开发者是想开发效率最大化、代码简洁使用方便...View Binding功能完善、在未来地位作用、以及能否超越Android Kotlin Extensions,我们仍需持续关注其后续版本。

1.7K41
领券