更改 ImageView 的背景很慢
Posted
技术标签:
【中文标题】更改 ImageView 的背景很慢【英文标题】:Changing background of ImageView is slow 【发布时间】:2020-05-25 02:19:35 【问题描述】:我正在创建一个应用程序,每次显示新报价时我都会更改背景图像。 我正在使用 ImageView,这些图片都是 jpg 文件。它们存储在 xxhdpi 下的 mipmap 文件夹中,因为图像对于 drawable 文件夹来说太大了。
但是,当我使用以下方法设置新的 ImageView 时:
background.setBackgroundResource(backgrounds.get(counter));
将显示新图片,但有半秒的延迟。那不是很酷,我只是想顺利地设置新图片。
我认为发布整个代码没有用。最重要的部分:
引用存储在 ArrayList 中,如下所示:
ArrayList<Integer> backgrounds;
在 onCreate() 之后,我正在填写这样的列表:
backgrounds = new ArrayList<>();
backgrounds.add((Integer) R.mipmap.background1);
backgrounds.add((Integer) R.mipmap.background2);
backgrounds.add((Integer) R.mipmap.background3);
backgrounds.add((Integer) R.mipmap.background4);
图片大小在 100KB 到 7MB 之间。
谁能告诉我为什么加载缓慢以及如何改进它?还有,把那些放在mipmap下的xxhdpi文件夹里对吗?
感谢您的每一个回答!
【问题讨论】:
7MB jpeg 必须有很大的分辨率。 1920x1080 通常对所有设备都足够了,您不需要 4K。您可以提供多种分辨率,先加载较小的分辨率,然后在加载完成后显示较大的分辨率。延迟很可能是由于图像被加载到内存。不过我建议你使用像 Glide 或 Picasso 这样的库来为你处理。 实现github.com/square/picasso和github.com/bumptech/glide你的问题就解决了 我现在用毕加索 【参考方案1】:你的问题下有一些有效的 cmets,但我会添加我的作为答案:)
-
减小图像大小至关重要 - 使用 JPG 而不是 PNG,降低分辨率可以节省一些时间和设备电池。
尝试将这些图像放在
drawable-nodpi
文件夹下 - 这样可以避免不必要的图像缩放。我假设您的应用中只有一个背景实例。
没有太多可以提高背景设置速度的方法,尤其是当图像已经在 APK 中烘焙时。
【讨论】:
图片已经是 jpg。我把它们都放在drawable/nodpi中,但结果相同。不过,谢谢你【参考方案2】:它现在工作正常。图片太大了,我将它们的大小从 2-3MB 减小到了 ~25KB。它们仍然看起来不错并且可以正常加载。
【讨论】:
以上是关于更改 ImageView 的背景很慢的主要内容,如果未能解决你的问题,请参考以下文章
如何在 javafx imageView 中获取显示图像的宽度/高度?