【发布时间】: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 这样的库来为你处理。
-
我现在用毕加索
标签: android performance android-layout