使用 Glide 加载和缩放 gif 图像
Load and scale gif image with Glide
我想从我的原始资源(或我的设备存储)加载 gif 图像,并使用 Glide 将其缩放到所需的宽度和高度。我成功加载了 gif 图片,但无法缩小它。
这是我的加载代码:
Glide.with(getContext()).load(R.raw.abc).override(
getResources().getDimensionPixelSize(R.dimen.note_icon_width),
getResources().getDimensionPixelSize(R.dimen.note_icon_height)).into(this);
这是我的声明视图 xml:
<ImageView
android:id="@+id/btn_open_warning"
android:layout_width="48dp"
android:layout_height="match_parent"
android:src="@drawable/ic_whatnew_toolbox"
app:srcSecondState="@drawable/ic_note_menu_disable" />
我不熟悉 Glide
,但也许如果您覆盖 onResourceReady()
方法,您可以缩小它。
使用.listener()
如下
Glide.with(getContext())
.load(R.raw.abc)
.listener(new RequestListener<Uri, GlideDrawable>() {
@Override
public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
//PENG
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
GlideDrawableImageViewTarget glideTarget = (GlideDrawableImageViewTarget) target;
ImageView iv = glideTarget.getView();
int width = iv.getMeasuredWidth();
int targetHeight = width * resource.getIntrinsicHeight() / resource.getIntrinsicWidth();
if(iv.getLayoutParams().height != targetHeight) {
iv.getLayoutParams().height = targetHeight;
iv.requestLayout();
}
return false;
}
})
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(this);
我想从我的原始资源(或我的设备存储)加载 gif 图像,并使用 Glide 将其缩放到所需的宽度和高度。我成功加载了 gif 图片,但无法缩小它。
这是我的加载代码:
Glide.with(getContext()).load(R.raw.abc).override(
getResources().getDimensionPixelSize(R.dimen.note_icon_width),
getResources().getDimensionPixelSize(R.dimen.note_icon_height)).into(this);
这是我的声明视图 xml:
<ImageView
android:id="@+id/btn_open_warning"
android:layout_width="48dp"
android:layout_height="match_parent"
android:src="@drawable/ic_whatnew_toolbox"
app:srcSecondState="@drawable/ic_note_menu_disable" />
我不熟悉 Glide
,但也许如果您覆盖 onResourceReady()
方法,您可以缩小它。
使用.listener()
如下
Glide.with(getContext())
.load(R.raw.abc)
.listener(new RequestListener<Uri, GlideDrawable>() {
@Override
public boolean onException(Exception e, Uri model, Target<GlideDrawable> target, boolean isFirstResource) {
//PENG
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, Uri model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
GlideDrawableImageViewTarget glideTarget = (GlideDrawableImageViewTarget) target;
ImageView iv = glideTarget.getView();
int width = iv.getMeasuredWidth();
int targetHeight = width * resource.getIntrinsicHeight() / resource.getIntrinsicWidth();
if(iv.getLayoutParams().height != targetHeight) {
iv.getLayoutParams().height = targetHeight;
iv.requestLayout();
}
return false;
}
})
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(this);