Android:在GridView

时间:2016-02-26 15:07:02

标签: android gridview bitmap imageview

在我的应用程序中,我在运行时生成一堆Bitmaps以在GridView中显示。生成的位图仅由矩形形状和大约五种不同颜色组成。

如果我把它们变大,它们会很好地缩小,但我会得到OutOfMemoryExceptions。但是,当我将它们缩小时,它们不会按比例缩放以适应列宽。我认为ImageView无法帮助我,因为它不知道最后一列。在GridView中将stretchMode设置为columnWidth也无济于事。

在ImageView上将adjustViewBounds设置为true有助于使用大型位图,但它对升级无效。

以某种方式可以将带有底层Bitmap的ImageView缩放到GridView的最大列宽吗?这将是我的首选解决方案。

如果没有,我可以提前确定GridView的columnWidth,只是相应地生成位图吗? (我不太喜欢这个解决方案,因为我怀疑在具有大屏幕的设备上我可能会再次遇到OutOfMemoryExceptions。)

2 个答案:

答案 0 :(得分:1)

你有两个选择。

方法1:

使用任何在线图片压缩网站优化您的图片。例如https://tinypng.com .TinyPNG使用智能有损压缩技术来减少PNG文件的文件大小。通过选择性地减少图像中的颜色数量,存储数据所需的字节更少。效果几乎不可见,但它在文件大小上产生了很大的差异!

方法2:

使用第三方库(如Universal Image LoaderGlide加载图像。这些库旨在为图像加载,缓存和显示提供功能强大,灵活且可高度自定义的工具。它提供了许多配置选项,并且可以很好地控制图像加载和缓存过程。

答案 1 :(得分:1)

由于您在应用中生成位图,因此可以使用Picasso等库来显示它们。毕加索将代表您处理内存,您无需担心OutOfMemory Exceptions。