【发布时间】:2014-10-31 11:43:11
【问题描述】:
我有一个应用程序供我自己使用,用于与 arduino 通信。有自定义形状按钮,所以我在 PNG 中将它们绘制为单一背景,添加了 Buttons 和 android:background="@android:color/transparent" 以使它们在顶部透明,几乎与自定义按钮一样大。
在这张图片中,您可以看到: 1. 背景 - 黑色背景,深蓝色按钮绘制为单个 png。 2. 橙色 png - 与背景大小相同,使用match parrent 选项绘制。 3. 隐形按钮 - 有透明选项,蓝色方块,共有7个。
为了消除指示图像的错位,我在 PNG 透明背景中绘制了相同大小的背景。我将它们添加到 res/drawable 并在布局 XML 中作为 ImageView 和 android:visibility="gone",布局是 FrameLayout。为了表明该按钮被按下,我设置了橙色自定义按钮的VISIBLE,当arduino打开输出时,发回确认我让我离开并设置另一个可见的PNG。它消耗大量内存。图像尺寸为 1478x2623。在最坏的情况下,我只能永久显示 8 张图像 + 背景。在 onCreate 方法中,我加载了所有 17 张图片。
为了避免 OOM - 内存不足错误,我必须调整图像大小,这让我看起来很糟糕......
如果图像在 XML 中的可见性是android:visibility="gone",它会在 onCreate 中加载图像吗?如果是这样,我应该只在需要时创建、缩放和绘制。如何实现?
编辑
做了一些改变。
- 图片缩小到 1920x1080
- 8 ImageView 留在布局和资源中设置在方法中,而不是在 XML 中
这些更改使其速度更快,并且不再出现 OOM 错误。目前我很忙,所以需要一些时间来测试答案中建议的方法。我会尽快尝试的。
【问题讨论】:
-
@Funkystein 我明白,它的
FrameLayout所以我把每个都画在上面,它不会影响gone或invisible。
标签: android image android-bitmap