2017-09-08 149 views
0

我对android中图片的处理方式有很多疑问,我希望看看您是否可以解决它们。使用ImageView滑动图片来调整图片的大小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" /> 

在此先感谢。

+0

使用'.override(w,h)'作为它。 – Piyush

+0

而我有没有1080的图像?例如与一个用户。他们有不同大小的图像。 – Traif

+0

@Traif使用Glide检查自定义转换。 – Raghunandan

回答

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

@Raghunandan是对的,你应该尝试转变你自己的方式。

0

如果要加载图像,而无需使用滑翔那么你可以使用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" /> 

有了滑翔你可以使用倍率(W,H)。当你使用覆盖(w,h)时,glide会生成一个新的带有覆盖(w,h)中提及的宽度和高度的位图,然后将图像加载到ImageView中。您可以使用fitCenter()来对齐图像。您也可以使用diskCacheStrategy()。如果你不使用它,Glide将只捕获新生成的位图。如果你想捕捉原始图像,然后使用diskCacheStrategy(DiskCacheStrategy.ALL)。

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

我希望这会有所帮助。