android - 使用 9-patch 图像会节省大量内存吗?

标签 android

我正在与我的应用程序中的 OutOfMemoryError 作斗争。

我创建了一个背景图像,它是 800 像素 x 480 像素。当这张图片被加载到使用它作为背景的 View 中时,我认为操作系统会为它使用 800*480*4 字节。这是很多内存。

如果我创建一个 10 像素 x 10 像素的 9 补丁图像来替换整个屏幕图像。当操作系统渲染使用 9 补丁的 View 时,它会自动将 9 补丁图像缩放到 800x480。我的问题是,在 9 补丁的情况下,操作系统将使用多少内存来绘制缩放后的 9 补丁图像?是10*10*4字节还是800*480*4字节?

谢谢。

最佳答案

首先,如果它是背景图像,并且可以缩放,请这样做,因为这是众所周知的最佳做法(尤其是对于背景),并且可以通过选择正确的颜色来补偿图像清晰度的轻微损失和/或背景图案。

关于内存,如果您使用的是 Drawable,那么您就安全了。但是位图显然不是以标准的 Java 方式分配的,而是通过 native 调用分配的;分配是在虚拟堆之外完成的,但会被计入。 More on this problem here

关于android - 使用 9-patch 图像会节省大量内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394426/

相关文章:

android - 自定义维度 - 何时发送用户范围自定义维度

android.database.CursorWindow.getString 中的 java.lang.OutOfMemoryError

Android volley - 当所有请求完成时获取回调

android - Monodroid ListView 获取所选项目类型转换错误

android - Android 中错误的复选框选择?

android - 如何在 ImageView 中显示.gif 文件?

android - 如何更改 android gridView 行中按钮的图标?

android - 从联系人获取照片

c# - 如何将 Android.Graphics 的 GetPixel 给出的 Int 转换为 Color?

java - RecyclerView 显示为空