package com.android.launcher3.utils;
import android.content.Context;
import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.widget.TextView;
import com.bumptech.glide.load.resource.gif.GifDrawable;
import com.bumptech.glide.request.target.CustomViewTarget;
import com.bumptech.glide.request.transition.Transition;
public class TextViewDrawableTarget extends CustomViewTarget<TextView, Drawable> {
/**
* Constructor that defaults {@code waitForLayout} to {@code false}.
*
* @param view
*/
int wh;
public TextViewDrawableTarget(@NonNull TextView view, int wh) {
super(view);
this.wh = wh;
}
@Override
protected void onResourceCleared(@Nullable Drawable placeholder) {
}
@Override
public void onLoadFailed(@Nullable Drawable errorDrawable) {
//加载失败例如url=null,此时使用 fallback不生效
// view.setCompoundDrawablesWithIntrinsicBounds(null, mContext.getDrawable(R.mipmap.ic_boy), null, null);
}
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
resource.setBounds(0, 0, wh, wh);
//view.setCompoundDrawablesWithIntrinsicBounds(null,resource, null, null);
view.setCompoundDrawables(null, resource, null, null);
if (resource instanceof GifDrawable) {
((GifDrawable) resource).start();
} else if (resource instanceof Animatable) {
((Animatable) resource).start();
}
}
}
使用
/**
* 加载圆角图片gif
*/
public static void loadRoundCircleImageGif(Context context, String url, TextView view, int wh) {
RequestOptions options = new RequestOptions()
.centerCrop()
.circleCrop()//设置圆形
.placeholder(placeholderSoWhite)
.error(errorSoWhite)
//.priority(Priority.HIGH)
.bitmapTransform(new RoundedCornersTransformation(25, 0, RoundedCornersTransformation.CornerType.ALL))
.diskCacheStrategy(DiskCacheStrategy.ALL);
Glide.with(context).load(url).apply(options).into(new TextViewDrawableTarget(view, wh));
}