批量获取Android上的许多位图资源

Bri*_*ian 5 resources android

我有一个很长的图形系列 - 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");
Run Code Online (Sandbox Code Playgroud)

那么有没有办法通过他们的名字获取资源?更好的是,资源系统之外是否存在将数据文件打包到android应用程序包中的规范方法,以便我可以使用它们?

我正在考虑反思,但这对我来说似乎不是正确的解决方案.

Com*_*are 13

使用getResources().getIdentifier()您的Context(例如Activity),但如果您将多次使用它,请缓存结果.getIdentifier()实施Resources.


Dan*_*Lew 6

我知道你已经找到了答案,但是如果你使用反射,那么你会看到一个很好的速度提升,因为getIdentifier()比较慢.我在这里写了关于如何做反射方法的文章.但是,这仅在您访问自己的资源时才有效.