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

批处理在Android上获取许多位图资源

批处理在Android上获取许多位图资源,android,resources,Android,Resources,我有一系列的图形——icon1_0.png,icon1_1.png,icon1_2.png…,icon12_0.png,icon12_1.png,icon12_2.png——我想把它们和我的android应用程序打包。理想情况下,我认为应该能够将它们作为资源加载,但资源id被设置为java标识符。当然,java标识符不能在运行时组装。我必须要求R.drawable.icon12_00,因此我无法设置循环 for(int icon=0;icon<12;icon++) for(int fra

我有一系列的图形——icon1_0.png,icon1_1.png,icon1_2.png…,icon12_0.png,icon12_1.png,icon12_2.png——我想把它们和我的android应用程序打包。理想情况下,我认为应该能够将它们作为资源加载,但资源id被设置为java标识符。当然,java标识符不能在运行时组装。我必须要求R.drawable.icon12_00,因此我无法设置循环

for(int icon=0;icon<12;icon++)
 for(int frame=0;frame<3;frame++)
  //syntax error obviously
  BitmapFactory.decodeResource(getResources(), R.drawable."icon" + icon + "_" + frame + ".png");

for(int icon=0;icon使用
getResources().getIdentifier()
来自
上下文(例如,
活动
),但如果要多次使用,请缓存结果。
getIdentifier()
是在上实现的。

我知道您已经找到了答案,但是如果使用反射,您将看到速度有了很好的提高,如getIdentifier()比较慢。我写过如何使用反射方法。但是,这仅在您访问自己的资源时有效。

反射速度也非常慢,您应该创建一个包含所有标识的数组。

好的,这很有效。getIdentifier(“resname”、“restype”、“com.domain.appname”);谢谢。您可以使用
getPackageName()
而不是将包名作为静态值传递,您的意思是,用代码写出整个循环吗?或者更聪明的方法?我对后者感兴趣,因为如果我可以比使用反射更快地获得资源,这将是一个很好的速度提升(但这将是一种稍微不同的情况,应用程序数据指的是资源,而不是代码)。@DanielLew他说你有一个代码生成器,可以用代码将整个循环写出来。这样做怎么样。速度稍微快一点。但遗憾的是,因为反射是出了名的脆弱,所以getIdentifier必须非常慢。