解決Glide加載網絡圓角圖片先顯示完整圖片的問題

問題: Glide加載網絡圖片的時候先顯示完整圖片,再顯示圓角圖片

圓角圖片的設置是採用如下開源庫控件
compile 'com.makeramen:roundedimageview:2.3.0'

直接在佈局文件裏面添加該控件便可,經過app:riv_corner_radius指定圓角的半徑android

<com.makeramen.roundedimageview.RoundedImageView
        android:id="@id/ididid"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:scaleType="centerCrop"
        app:riv_corner_radius="6dp" />

但是若是經過Glide的into()方法直接傳入該控件的引用就會出現加載圖片到控件上時先顯示直角圖片,再顯示圓角圖片。這個時候若是採用了into()方法裏面傳入BitmapImageViewTarget對象的話就能避免這個問題。into方法使用的方式以下:網絡

into(new BitmapImageViewTarget(imageView) {
                    @Override
                    protected void setResource(Bitmap resource) {
                        imageView.setImageBitmap(resource);//imageView爲該圓角控件的引用
                    }
                });

注意:
1. 若是要給into傳遞BitmapImageViewTarget對象的時候須要先調用asBitmap方法
2. 調用asBitmap方法後就不能再調用crossFade方法,若是想實現淡入的動畫效果能夠使用animate方法app

Glide.with(mContext)
                .load(photoTinyURL)
                .asBitmap()
                .animate(R.anim.crop_image_fade_anim)
                .placeholder(R.drawable.crop_corner_white)
                .error(R.drawable.icon_default_head_gray_white)
                .into(new BitmapImageViewTarget(imageView) {
                    @Override
                    protected void setResource(Bitmap resource) {
                        imageView.setImageBitmap(resource);
                    }
                });

文件crop_image_fade_anim的內容:ide

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="200"
        android:fromAlpha="0.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toAlpha="1.0" />
</set>
相關文章
相關標籤/搜索