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

Tra*_*aif 10 android resize imageview 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" />
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Bhu*_* BS 38

Override必须通过RequestOptions最新版本访问Glide 4.x.你可以RequestOptions通过添加apply()

Glide
    .with(context)
    .load(path)
    .apply(new RequestOptions().override(600, 200))
    .into(imageViewResizeCenterCrop);
Run Code Online (Sandbox Code Playgroud)

  • 仅当原始图像大于您想要的尺寸时才可以调整尺寸吗?我需要将图像的最大边设置为 1000px,但如果我使用 override(1000) Glide 会给我 1000x1000 图像,即使它是 10x10。 (2认同)

ArM*_*372 10

在 glide 4.x 中,'override' 在 'apply' 中:

Glide.with(getBaseContext())
 .load(path)
 .apply(RequestOptions.placeholderOf(R.mipmap.no_wifi)
 .error(R.mipmap.no_wifi)
 .override(500,500))
 .into(mImageView);
Run Code Online (Sandbox Code Playgroud)


Rad*_*hey 6

Glide
    .with(context)
    .load(path)     
    .apply(new RequestOptions().override(600, 200))
    .centerCrop() 
    .into(imageViewResizeCenterCrop);
Run Code Online (Sandbox Code Playgroud)

@Raghunandan 是对的。您应该尝试以自己的方式进行转型。

  • 注意:必须通过最新版本的 glide 中的 RequestOptions 访问覆盖:“apply(new RequestOptions().override(600, 200))” (5认同)

小智 5

如果您想在不使用滑动的情况下加载图像,则可以使用scaleType“fitCenter”或“centerInside”,如下所示 -

<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" />
Run Code Online (Sandbox Code Playgroud)

使用 Glide,您可以使用 override(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)
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。

  • 注意:在最新版本的 Glide 中必须通过 RequestOptions 访问 Override:“apply(new RequestOptions().override(800, 400))” (6认同)