所以我不知道为什么会这样。我正在使用Universal Image Loader来加载这些图像。由于一些奇怪的原因,似乎最后一行像素正在被拉伸。我希望图像均匀伸展。 (我不在乎它看起来很奇怪。下面的图片仅供演示之用。)
另外,不要介意第一张和最后一张图片。我故意模糊了它,因为它上面有人。
这就是我设置Universal Image Loader的方法:
//setup Image Loader for loading cruise line logos
displayImageOptions = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_launcher)//show this image when image is loading
.showImageForEmptyUri(R.drawable.ic_launcher)//show this image incase image doesn't exist
.showImageOnFail(R.drawable.ic_launcher)//show this image if fetching image from URL didn't work
.cacheInMemory(true)//cache image in RAM
.cacheOnDisc(true)//cache image in device for later use
.considerExifParams(true)
.displayer(new RoundedBitmapDisplayer(5))//super subtle rounded corners on images
.build();
答案 0 :(得分:5)
这是由RoundedBitmapDisplayer绘制位图的方式引起的。
如果查看源代码,您会看到它使用RoundedDrawable,它使用canvas.drawRoundRect()绘制一个所需大小的Drawable的圆角矩形,使用下载的图像作为纹理通过BitmapShader 。 BitmapShader不支持缩放(仅限制和模式)。尝试使用SimpleBitmapDisplayer代替,它使用正常的ImageView.setImageBitmap()方式显示图像。
如果你需要圆角,你必须找到一种不同的方法来实现它,例如首先将Bitmap缩放到所需的大小。另一个选项是在委托给BitmapDrawable进行缩放之前调用Canvas.saveLayer(),然后使用PorterDuff.Mode.DST_IN应用圆角掩蔽效果。无论哪种方式,您最终都会编写更多低级代码,但您应该能够在自定义BitmapDisplayer中很好地封装所有内容。