使用Glide加载和缩放gif图像

问题描述 投票:5回答:1

我想从我的原始资源(或我的设备存储)加载一个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" />
android android-glide
1个回答
8
投票

我不熟悉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);
© www.soinside.com 2019 - 2024. All rights reserved.