在我的应用程序中,我在运行时生成一堆Bitmaps以在GridView中显示。生成的位图仅由矩形形状和大约五种不同颜色组成。
如果我把它们变大,它们会很好地缩小,但我会得到OutOfMemoryExceptions。但是,当我将它们缩小时,它们不会按比例缩放以适应列宽。我认为ImageView无法帮助我,因为它不知道最后一列。在GridView中将stretchMode设置为columnWidth也无济于事。
在ImageView上将adjustViewBounds设置为true有助于使用大型位图,但它对升级无效。
以某种方式可以将带有底层Bitmap的ImageView缩放到GridView的最大列宽吗?这将是我的首选解决方案。
如果没有,我可以提前确定GridView的columnWidth,只是相应地生成位图吗? (我不太喜欢这个解决方案,因为我怀疑在具有大屏幕的设备上我可能会再次遇到OutOfMemoryExceptions。)
答案 0 :(得分:1)
你有两个选择。
方法1:
使用任何在线图片压缩网站优化您的图片。例如https://tinypng.com .TinyPNG使用智能有损压缩技术来减少PNG文件的文件大小。通过选择性地减少图像中的颜色数量,存储数据所需的字节更少。效果几乎不可见,但它在文件大小上产生了很大的差异!
方法2:
使用第三方库(如Universal Image Loader,Glide加载图像。这些库旨在为图像加载,缓存和显示提供功能强大,灵活且可高度自定义的工具。它提供了许多配置选项,并且可以很好地控制图像加载和缓存过程。
答案 1 :(得分:1)
由于您在应用中生成位图,因此可以使用Picasso等库来显示它们。毕加索将代表您处理内存,您无需担心OutOfMemory Exceptions。