ImageView无法正确拉伸图像

 mobiledu2502881683 发布于 2023-01-31 00:27

所以我不知道为什么会这样.我正在使用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();

Karsten.. 5

这是由RoundedBitmapDisplayer绘制位图的方式引起的.

如果查看源代码,您会看到它使用RoundedDrawable,它使用canvas.drawRoundRect()绘制一个所需大小的Drawable的圆角矩形,使用下载的图像作为纹理通过BitmapShader.BitmapShader不支持缩放(仅限制和模式).尝试使用SimpleBitmapDisplayer,它使用正常的ImageView.setImageBitmap()方式显示图像.

如果您需要圆角,则必须找到不同的方法来实现它,例如首先将位图缩放到所需的大小.另一个选择是在委托给BitmapDrawable进行缩放之前调用Canvas.saveLayer(),然后使用PorterDuff.Mode.DST_IN应用圆角掩蔽效果.无论哪种方式,您最终都会编写更多低级代码,但您应该能够在自定义BitmapDisplayer中很好地封装所有内容.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有