2011-03-07 54 views
0

我有一个原始的xml资源表示一个级别文件。我想在这个文件中引用一个drawable,但我没有一个好主意该怎么做 - 因为我不知道一个可绘制的id。什么是这样做的好方法?自定义xml引用可绘制资源

回答

5

假设你有一个具有你知道文件名的可绘制资源,你可以使用的文件名,并获得这样的ID:

String mDrawableName = "stringFromXML"; 
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName()); 

(通过How do I get the resource id of an image if I know its name?

(我看我有一个完全不同的理解你的问题,然后另一个答案:要清楚:我假设你有你自己创建的XML,代表游戏中的一个层次。所以XML是你的个人事物,而不是一个android layout-xml ,'级别'也是特定于您的应用程序的东西)

+0

这正是我所需要的!非常感谢你! – 2011-03-07 18:36:41

+0

没问题,如果你用这个答案,请按左边的绿色检查;) – Nanne 2011-03-07 18:37:36

0

为什么你这样做呢?如果您使用的是LevelListDrawable,则会在关卡更改时自动更改绘图。也就是说,如果你真的需要得到它的绘制对象,你可以尝试这样的事情(比如你需要3级绘制):

ImageView iv = (ImageView)findViewById(R.id.imageview); 
LevelListDrawable lld = (LevelListDrawable)iv.getDrawable(); 
int temp = lld.getLevel(); 
lld.setLevel(3); 
Drawable d = lld.getCurrent(); 
lld.setLevel(temp); 

有可能实现更简单的方法你想要什么尽管如此,如果你可以详细说明。

+0

这是因为我有自定义绘制精灵的GLSurfaceView派生。我使用基于可绘制ID的自己书写的TExtureProvider类加载纹理。 – 2011-03-07 18:40:44