databinding中的ImageView與Glide結合使用


compile 'com.github.bumptech.glide:glide:3.7.0'               加入glide支持
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文件中需要配置相關屬性,否則圖片顯示不出來的。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com