Android Glide加载图片时,基于图片宽高比自动伸缩ImageView高度

ImageView布局

    <ImageView
        android:id="@+id/iv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

代码实现

GlideUtil.java

/**
     * 加载图片,支持高度伸缩
     * @param context 上下文
     * @param url 图片地址
     * @param imageView 图片组件
     */
    public static void loadScaleImage(Context context,
                                      String url,
                                      final ImageView imageView) {
        Glide.with(context)
                .asBitmap()
                .load(url)
                .error(R.drawable.default_stand_bg)
                .into(new CustomTarget<Bitmap>() {
                    @Override
                    public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                        int imageWidth = resource.getWidth();
                        int imageHeight = resource.getHeight();

                        // 计算ImageView 的高度
                        int imageViewWidth = imageView.getWidth();
                        int imageViewHeight = (int) ((float) imageViewWidth / imageWidth * imageHeight);

                        // 设置ImageView 的高度
                        ViewGroup.LayoutParams params = imageView.getLayoutParams();
                        params.height = imageViewHeight;
                        imageView.setLayoutParams(params);

                        //将图片显示在 ImageView 中
                        imageView.setImageBitmap(resource);
                    }

                    @Override
                    public void onLoadCleared(@Nullable Drawable placeholder) {
                        // 可选的清除操作
                    }
                });
    }

代码调用

ImageVIew iv = findViewById(R.id.iv_painting);
GlideUtil.loadScaleImage(context, paintingInfo.getUrl(), iv);
posted @ 2024-09-03 10:18  齐行超  阅读(64)  评论(0编辑  收藏  举报