我有多个高分辨率背景,需要缩小以适应较低的屏幕,如Stack Overflow中所示,我将它们放在drawable
文件夹中。我不知道它是否正确,所以我试着测试。
我有OutOfMemory
例外,因此我不得不将它们移到drawable-nodpi
,它运行良好,没有任何异常,但我不知道这是否是在Android中使用它的正确方法
对此有何建议?有人说我需要为每个屏幕背景制作,例如xxhdpi
,xhdpi
,但我想在最高屏幕上制作背景,并将其缩小更好?
答案 0 :(得分:1)
我把它们放在drawable文件夹中。我不知道它是否正确,所以我试着测试。
如果你在drawable
文件夹中放置一个drawable,Android将使用该drawable用于所有屏幕尺寸,缩放drawable以反映设备的密度(例如,xhdpi
设备会炸毁图像2x )。
我有
OutOfMemory
例外,因此我不得不将它们移到drawable-nodpi
,它运行良好,没有任何异常,但我不知道这是否是在Android中使用它的正确方法
-nodpi
文件夹中的Drawables根本不会缩放。如果你想扩展,那不是你想要的。
但是我想在最高的屏幕上制作背景,并将其缩小更好?
如果您只在APK中包含最高分辨率的图像,则Android必须在您使用时将整个图像加载到内存中。如果您在100x100屏幕上显示500x500图像,Android将需要将整个500x500图像加载到内存中。
屏幕较小的设备往往内存较少,因此可能导致OutOfMemoryException
。
从设计角度来看,您也无法控制缩小图像的外观。根据您的使用情况,这可能没问题。
对此有任何建议
正确的方法是预先缩放您的drawable并将它们放在适当的drawable文件夹中。 1x资产进入drawable-mdpi
,资产缩放到1.5x进入drawable-hdpi
等等。然后,Android将仅加载设备屏幕尺寸的正确大小的资产。
答案 1 :(得分:0)
有一点需要注意。 1.你应该尽可能地优化图像,以便在低端设备中 加载图像OutOfMemory错误不存在。 2.根据您的应用程序设备获取高分辨率的图像 支持将该映像放在xxhdpi或xxxhdpi资源文件夹中。 3.Android自动缩小,保持图像的宽高比 加载时。