Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序背景资源路径的最佳方式_Android - Fatal编程技术网

Android 应用程序背景资源路径的最佳方式

Android 应用程序背景资源路径的最佳方式,android,Android,我有多个高分辨率背景,需要缩小以适应较低的屏幕,正如Stack Overflow中建议的那样,我已经将它们放在可绘制的文件夹中。我不知道它是否正确,所以我试着测试 我有OutOfMemory异常,因此我不得不将它们移动到drawable nodpi,它运行良好,没有任何异常,但我不知道这是否是在Android中使用它的正确方法 有什么建议吗?有人说我需要为每个屏幕制作背景,比如xxhdpi,xhdpi,但我想在最高的屏幕上制作背景,并将其缩小得更好 我已经把它们放在可绘图的文件夹里了。我不知道它

我有多个高分辨率背景,需要缩小以适应较低的屏幕,正如Stack Overflow中建议的那样,我已经将它们放在
可绘制的
文件夹中。我不知道它是否正确,所以我试着测试

我有
OutOfMemory
异常,因此我不得不将它们移动到
drawable nodpi
,它运行良好,没有任何异常,但我不知道这是否是在Android中使用它的正确方法

有什么建议吗?有人说我需要为每个屏幕制作背景,比如
xxhdpi
xhdpi
,但我想在最高的屏幕上制作背景,并将其缩小得更好

我已经把它们放在可绘图的文件夹里了。我不知道它是否正确,所以我试着测试

如果您在
drawable
文件夹中放置一个可绘制的,Android将对所有屏幕大小使用该可绘制的,缩放可绘制的以反映设备的密度(例如
xhdpi
设备将放大图像2倍)

我有
OutOfMemory
异常,因此我不得不将它们移动到
drawable nodpi
,它运行良好,没有任何异常,但我不知道这是否是在Android中使用它的正确方法

-nodpi
文件夹中的绘图将完全不缩放。如果你想要缩放,那不是你想要的

但我想在最高的屏幕上制作一个背景,并将其缩小得更好

如果在APK中只包含最高分辨率的图像,那么Android必须在使用时将整个图像加载到内存中。如果在100x100屏幕上显示500x500图像,Android需要将整个500x500图像加载到内存中

小屏幕设备的内存往往较少,因此这可能导致
OutOfMemoryException

从设计的角度来看,您也无法控制缩放图像的外观。根据您的用例,这可能是好的

有什么建议吗


正确的方法是预先缩放您的可绘制文件,并将其放置在适当的可绘制文件夹中。1x资产进入可绘制mdpi,缩放到1.5x的资产进入可绘制hdpi,等等。然后Android将只加载设备屏幕大小的正确大小的资产。

需要注意一些问题。 1.您应该尽可能优化图像,以便在低端设备中 在加载映像OutOfMemory时,不存在错误。 2.获取高分辨率图像,并基于应用程序将使用的设备 支持将该图像放在xxhdpi或xxxhdpi资源文件夹中。 3.Android会自动缩小比例,保持图像的纵横比
加载时。

添加到Tanis answer中,请检查以生成不同缩放版本的图像。如果图像是HI-REST,单独的PNG会增加APK的大小。如果APK大小对你来说很重要,那么就考虑使用。谢谢你的详细回答,并且对于@暴雪的评论来说,真的帮助了我,谢谢大家。