Android - Glide加载gif时图片自适应手机屏幕的宽高

本文档介绍了一个解决使用Glide加载GIF到ImageView时无法完全铺满屏幕的问题。通过监听GifDrawable的加载完成,并动态设置ImageView的宽高,确保图片按比例填充。主要步骤包括设置 imageView 的 ScaleType 为 FIT_XY,以及根据GifDrawable的宽高比例调整ImageView的高度。
摘要由CSDN通过智能技术生成

前言:

ui'给的切图是个gif,但是用Glide加载到ImageView的时候会出现不能铺满屏幕的尴尬情况,下面就用这个方法加载gif。

步骤:逻辑很简单,就是获取gif的宽高动态的给到iv宽高就可以

/**
     * Glide加载gif, 占满宽高
     *
     * @param context
     * @param imageView
     */
    public static void loadGifFixXY(Context context, final ImageView imageView) {

        //glide是在listener()方法中传入一个RequestListener来设置当图片资源准备好了以后自定义的操作的。
        Glide.with(context).asGif().load(R.drawable.manhole_cover).diskCacheStrategy(DiskCacheStrategy.NONE)
                .listener(new RequestListener<GifDrawable>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<GifDrawable> target, boolean isFirstResource) {
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {
//首先设置imageView的ScaleType属性为ScaleType.FIT_XY,让图片不按比例缩放,把图片塞满整个View。
                        if (imageView.getScaleType() != ImageView.ScaleType.FIT_XY) {
                            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                        }
                        // 得到当前imageView的宽度(我设置的是屏幕宽度),获取到imageView与图片宽的比例,然后通过这个比例去设置imageView的高
                        ViewGroup.LayoutParams params = imageView.getLayoutParams();
                        int vw = imageView.getWidth() - imageView.getPaddingLeft() - imageView.getPaddingRight();
                        float scale = (float) vw / (float) resource.getIntrinsicWidth();
                        int vh = Math.round(resource.getIntrinsicHeight() * scale);
                        params.height = vh + imageView.getPaddingTop() + imageView.getPaddingBottom();
                        imageView.setLayoutParams(params);
                        return false;
                    }

                })
                .error(R.drawable.ic_launcher_background)
                .into(imageView);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值