android开发小技巧_图片

在我们进行开发的时候,图片是常用布局控件之一。
在新的databinding中,ImageView使用上面还是有差异的。接下来的实例,我们将展示如何使用glide进行图片设置。

开发语言

kotlin,Android

使用方法

引入glide包

1
2
3
4
5
dependencies {
//glide图片加载控件
implementation "com.github.bumptech.glide:glide:$glideVersion"
implementation "jp.wasabeef:glide-transformations:$glideTransformationVersion"
}

配置databingding

1
2
3
4
5
6
android {
//dataBinding
dataBinding {
enabled true
}
}

在bindadapter中配置图片控件属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@BindingAdapter(value = ["app:imageUrl", "app:imageError", "app:placeHolderImg", "app:isCircle", "app:isLocal"], requireAll = false)
fun loadImage(
imageView: ImageView,
url: String?,
errorDw: Int?,
placeHolder: Int?,
isCircle: Boolean? = false,
isLocal: Boolean? = false
) {
if (isCircle != null && isCircle) {
if (isLocal == true) {
Glide.with(imageView.context)
.load(url?.toInt())
.error(errorDw?:R.drawable.img_touxiang)
.placeholder(placeHolder ?: R.drawable.img_touxiang)
.transform(GlidCircleTransform(imageView.context))
.into(imageView)
} else {
Glide.with(imageView.context)
.load(url)
.error(errorDw?:R.drawable.img_touxiang)
.placeholder(placeHolder ?: R.drawable.img_touxiang)
.transform(GlidCircleTransform(imageView.context))
.into(imageView)
}
} else {
if (isLocal == true) {
Glide.with(imageView.context)
.load(url?.toInt())
.error(errorDw?:R.drawable.img_touxiang)
.placeholder(placeHolder ?: R.drawable.img_touxiang)
.into(imageView)
} else {

Glide.with(imageView.context)
.load(url)
.error(errorDw?:R.drawable.img_touxiang)
.placeholder(placeHolder ?: R.drawable.img_touxiang)
.into(imageView)
}
}
}

布局文件中使用bingadapter中定义的属性

1
2
3
4
5
6
7
8
9
10
<ImageView
android:layout_marginLeft="@dimen/margin_left_some"
android:layout_marginRight="@dmargin_right_some"
tools:background="@drawable/img_background"
app:imageUrl="@{vm.backgroundUrl}"
app:imageError="@{vm.errorImg}"
app:isLocal="@{true}"
app:placeHolderImg="@{vm.placeHolderImg}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

在viewmodel中定义变量

1
2
3
val placeHolderImg = ObservableField<Int>(R.drawable.img_place_holder)
val errorImg = ObservableField<Int>(R.drawable.img_error)
val imageUrl = ObservableField<Int>(R.drawable.img_background)
坚持原创技术分享,您的支持将鼓励我继续创作!
关注微信公众号 haibintalk,最新文章主动推送
关注微信公众号: haibintalk