man*_*anu 132 android android-image android-resources
如果我知道它的名字(在Android中),我如何获得图像的资源ID?
Fra*_*ita 265
有这样的事情:
String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
Run Code Online (Sandbox Code Playgroud)
VSB*_*VSB 28
你也可以试试这个:
try {
Class res = R.drawable.class;
Field field = res.getField("drawableName");
int drawableId = field.getInt(null);
}
catch (Exception e) {
Log.e("MyTag", "Failure to get drawable id.", e);
}
Run Code Online (Sandbox Code Playgroud)
我从下面的网址中复制了这些源代码.根据在此页面中完成的测试,它比getIdentifier()快5倍.我还发现它更方便易用.希望它也能帮到你.
链接: 在Android中动态检索资源
Azh*_*har 10
您可以使用此函数来获取资源ID:
public static int getResourseId(Context context, String pVariableName, String pResourcename, String pPackageName) throws RuntimeException {
try {
return context.getResources().getIdentifier(pVariableName, pResourcename, pPackageName);
} catch (Exception e) {
throw new RuntimeException("Error getting Resource ID.", e)
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您想获得可绘制资源ID,可以像这样调用方法:
getResourseId(MyActivity.this, "myIcon", "drawable", getPackageName());
Run Code Online (Sandbox Code Playgroud)
(或从片段):
getResourseId(getActivity(), "myIcon", "drawable", getActivity().getPackageName());
Run Code Online (Sandbox Code Playgroud)
对于字符串资源ID,您可以这样调用它:
getResourseId(getActivity(), "myAppName", "string", getActivity().getPackageName());
Run Code Online (Sandbox Code Playgroud)
等等...
小心:如果找不到资源ID,它会抛出RuntimeException.务必在生产中正确恢复.
naX*_*aXa 10
公共系统资源的示例:
// this will get id for android.R.drawable.ic_dialog_alert
int id = Resources.getSystem().getIdentifier("ic_dialog_alert", "drawable", "android");
Run Code Online (Sandbox Code Playgroud)
另一种方法是引用android.R.drawable类的文档.
归档时间: |
|
查看次数: |
96497 次 |
最近记录: |