Android 框架有各种图标和图像 - 可作为 R.drawable.* 访问 - 应用程序可将其用于常见任务。他们的名字给出了一些关于他们是什么的暗示,但在许多情况下这还不够。必须反复试验才能找到适合自己目的的正确图标。
我的问题:有没有一种方法可以让我在一个地方预览所有这些图像,以便我可以快速决定使用哪些图像?
我查看了 android 源代码,但无法找到这些可绘制对象的根目录。
如果你们有任何建议,请告诉我。 谢谢。
最佳答案
谢谢 Corey,这正是我想要的。与此同时,我制作了一个小应用程序来预览所有可绘制对象。这是一个使用反射列出所有可绘制对象(图像预览及其名称)的小型应用程序,如屏幕截图所示。
它基本上是以下代码 fragment :
public class DrawablePreviewActivity extends ListActivity
{
private static final String TAG = "DrawablePreviewActivity";
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setTitle("Preview of android.R.drawable.*");
try {
Class RClass = Class.forName("android.R");
Class[] subclasses = RClass.getDeclaredClasses();
Class RDrawable = null;
for(Class subclass : subclasses) {
if("android.R.drawable".equals(subclass.getCanonicalName())) {
RDrawable = subclass;
break;
}
}
List<Map<String, Object>> drinfo = new ArrayList<Map<String, Object>>();
Field[] drawables = RDrawable.getFields();
for(Field dr : drawables) {
Map<String, Object> map = new HashMap<String, Object>();
Drawable img = getResources().getDrawable(dr.getInt(null));
map.put("drimg", dr.getInt(null));
map.put("drname", dr.getName());
drinfo.add(map);
}
setListAdapter(new SimpleAdapter(this,
drinfo,
R.layout.listitem,
new String[] { "drimg", "drname" },
new int[] { R.id.drimg, R.id.drname }));
} catch(IllegalAccessException iae) {
Log.e(TAG, iae.toString());
} catch(ClassNotFoundException cnfe) {
Log.e(TAG, cnfe.toString());
}
}
}
您还可以从 http://www.altcanvas.com/downloads/drawablepreview.tar.gz 获得源码包
或来自 http://www.altcanvas.com/downloads/apks/drawablepreview.apk 的 apk
关于android - 如何预览 R.drawable.* 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1905128/