databinding中的ImageView与Glide结合使用
2019-07-01 本文已影响0人
北铭
public class ImageViewAttrAdapter {
@BindingAdapter("android:src")
public static void setSrc(ImageView view, Bitmap bitmap) {
view.setImageBitmap(bitmap);
}
@BindingAdapter("android:src")
public static void setSrc(ImageView view, int resId) {
view.setImageResource(resId);
}
@BindingAdapter({"app:imageUrl", "app:placeHolder", "app:error"})
public static void loadImage(ImageView imageView, String url, Drawable holderDrawable, Drawable errorDrawable) {
Glide.with(imageView.getContext())
.load(url)
.placeholder(holderDrawable)
.error(errorDrawable)
.into(imageView);
}
}
这里loadImage()绑定了多个属性,"app:imageUrl"、“app:placeHolder”、"app:error"属性。
分别表示要加载的图片路径,占位图片,和加载出错时加载的图片。
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data class=".Custom">
</data>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
app:imageUrl="@{@string/url}"
app:placeHolder="@{@drawable/holder}"
app:error="@{@drawable/error}" />
</LinearLayout>
</layout>
strings.xml中的内容:
<string name="url">http://avatar.csdn.net/4/0/7/1_zhuhai__yizhi.jpg</string>
在drawable-hdpi目录下有holder.png和error.png图片。
运行就可以显示了。
其中
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
app:imageUrl="@{@string/url}"
app:placeHolder="@{@drawable/holder}"
app:error="@{@drawable/error}" />
这里面的@{@string/url},@{@drawable/holder},@{@drawable/error}三个值,完全可以定义一个类变量来实现。
注意一点在manifast.xml文件中需要配置相关属性,否则图片显示不出来的。
作者:zhuhai__yizhi
来源:CSDN
原文:https://blog.csdn.net/zhuhai__yizhi/article/details/52922092
版权声明:本文为原创博主为zhuhai__yizhi,转载请附上博文链接!