Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.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_Performance_Android Layout_Animation - Fatal编程技术网

android系统将如何处理替代图像资源

android系统将如何处理替代图像资源,android,performance,android-layout,animation,Android,Performance,Android Layout,Animation,我注意到,如果没有找到匹配的资源,android会为替代资源做一些额外的工作 例如: 我将一些图像(大小:640x960)放入drawable hdpi文件夹,而drawable xxhdpi文件夹中没有图像 使用decodeResource()加载图像: BitmapFactory.decodeResource(imageView.getResources(), imageRes,mBitmapFactoryOptions); 在x

我注意到,如果没有找到匹配的资源,android会为替代资源做一些额外的工作

例如:

我将一些图像(大小:640x960)放入
drawable hdpi
文件夹,而
drawable xxhdpi
文件夹中没有图像

使用
decodeResource()
加载图像:

BitmapFactory.decodeResource(imageView.getResources(),
                             imageRes,mBitmapFactoryOptions);
  • 在xxhdpi屏幕手机(nexus 5)上,执行该方法需要额外的30-50毫秒;除了hdpi屏幕手机(三星I9100)

  • 虽然只加载一个图像并没有什么大不了的,但在我创建逐帧动画时,它产生了很大的不同

  • 我已经检查过了,但不知道安卓系统做了什么以及如何避免


感谢您的进一步帮助。

当您的设备没有资源,但有一个用于其他屏幕的资源,可以根据您的屏幕进行调整时,Android会进行调整。当涉及到绘图时,Android会根据您的DPI/imageDPI比率重新缩放图像。这就是为什么装载绞车速度会变慢的原因。您可以使用探查器并密切监视加载任务来验证这一点


为了避免这种情况,您必须为您计划使用的所有屏幕配置提供图像,或者使用assets文件夹手动加载图像。

还应考虑到不同硬件的性能不同。。。我的2美分。谢谢你的帮助@鲍勃,你能更具体地说一下“不同的硬件性能不同”吗?这让我感到不安全……每台设备都有不同的CPU(这是任何计算机的心脏——好吧,实际上是大脑)。有些甚至没有GPU(图形CPU)。和不同的时钟速度。更别提那些在设备上设置根目录并能够在设备上加/减时钟的用户。因此,与其他设备相比,每个设备的性能都会更好或更差。如果您优化您的代码,使其在低性能硬件上正常运行,那么在电源设备上它将更加出色。