在ImageView Android中使用Glide调整图像大小

时间:2017-09-08 10:40:28

标签: android imageview resize android-glide

我对android中图像的处理有很多疑问,我希望看看你是否可以解决它们。

此时我的图像占用320 dp高,match_parent宽度约占屏幕的60%。 这张载有Glide的图片,我个人的1080张图片。

我尝试制作centroCrop和fitXY,但总是使图像变形。我所知道的第一种类型会切割图像,但第二种类型适合大小,但它会使图像变形或变宽。

有没有办法,用Glide插入并按原样看到它? 我可以在ImageView和Glide中使用哪些属性?

<ImageView
        android:id="@+id/img"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:nestedScrollingEnabled="false"
        app:layout_collapseMode="parallax"
        android:scaleType="fitXY"
        app:layout_scrollFlags="scroll|enterAlways" />

6 个答案:

答案 0 :(得分:25)

必须在Override的最新版本中通过RequestOptions访问

Glide 4.x。您可以通过RequestOptions

添加apply()
Glide
    .with(context)
    .load(path)
    .apply(new RequestOptions().override(600, 200))
    .into(imageViewResizeCenterCrop);

答案 1 :(得分:3)

在滑行4.x中,“替代”位于“应用”中:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

答案 2 :(得分:2)

Glide
    .with(context)
    .load(path)
    .override(600, 200) 
    .centerCrop() 
    .into(imageViewResizeCenterCrop);

@Raghunandan是对的。你应该尝试按照自己的方式进行改造。

答案 3 :(得分:0)

如果你想在不使用滑行的情况下加载图像,那么你可以使用scaleType&#34; fitCenter&#34;或&#34; centerInside&#34;如下 -

<ImageView
        android:id="@+id/img"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:nestedScrollingEnabled="false"
        app:layout_collapseMode="parallax"
        android:scaleType="centerInside"
        app:layout_scrollFlags="scroll|enterAlways" />

使用Glide,你可以使用覆盖(w,h)。当您使用override(w,h)时,glide会生成一个新的位图,其宽度和高度在override(w,h)中提到,然后将图像加载到ImageView中。您可以使用fitCenter()来对齐图像。您也可以使用diskCacheStrategy()。如果你不使用它,Glide将只捕获新生成的位图。如果你想捕获原始图像,那么使用diskCacheStrategy(DiskCacheStrategy.ALL)。

Glide.with(context)
            .load(image_path)
            .override(800, 400)
            .fitCenter()
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .into(imageView)

我希望这会有所帮助。

答案 4 :(得分:0)

您必须对imageview进行以下操作:

        <ImageView
            android:id="@+id/img"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:scaleType="fitCenter" />

,这与您的滑行:

    Glide.with(getBaseContext())
            .load(path)
            //.placeholder(R.drawable.drawable)
            .error(R.drawable.noimg)
            .animate(R.anim.animation_fade_in)
            .into(mImageView);

这对我来说很完美。

答案 5 :(得分:0)

Glide 4.x-如果要获取位图,请尝试:

Glide.with(mContext).asBitmap().
                        load(pictureUri)
                        .apply(new RequestOptions().override(50, 50))
                        .listener(new RequestListener<Bitmap>() {
                            @Override
                            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
                                return false;
                            }
                        @Override
                        public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                            // resource is your loaded Bitmap
                            imgView.setImageBitmap(resource);
                            return true;
                        }
                    }).submit();