Android 如何预览R.drawable.*图像

Android 如何预览R.drawable.*图像,android,icons,Android,Icons,Android框架有各种各样的图标和图像,可以通过R.drawable.*访问,这些图标和图像可以被应用程序用于普通任务。他们的名字暗示了他们是什么,但在很多情况下这还不够。人们必须使用反复试验来找到适合自己目的的正确图标 我的问题是:有没有一种方法可以让我在一个地方预览所有这些图像,这样我就可以快速决定使用哪些图像 我已经查看了android源代码,但找不到这些Drawable的根 如果你们有什么建议,请告诉我。 谢谢。我找到了一个有用的链接,在那里我找到了谷歌官方网站。它似乎包含了大部分(如

Android框架有各种各样的图标和图像,可以通过R.drawable.*访问,这些图标和图像可以被应用程序用于普通任务。他们的名字暗示了他们是什么,但在很多情况下这还不够。人们必须使用反复试验来找到适合自己目的的正确图标

我的问题是:有没有一种方法可以让我在一个地方预览所有这些图像,这样我就可以快速决定使用哪些图像

我已经查看了android源代码,但找不到这些Drawable的根

如果你们有什么建议,请告诉我。
谢谢。

我找到了一个有用的链接,在那里我找到了谷歌官方网站。它似乎包含了大部分(如果不是全部的话)Android内置的绘图功能。

谢谢Corey,这正是我想要的。与此同时,我制作了一个小应用程序来预览所有的绘图。这是一个小应用程序,它使用反射来列出所有可绘制内容(图像预览及其名称),如本屏幕截图所示

基本上是以下代码片段:

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());
        }
    }
}
公共类DrawablePreviewActivity扩展了ListActivity
{
私有静态最终字符串标记=“DrawablePreviewActivity”;
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setTitle(“android.R.drawable.*预览版”);
试一试{
Class RClass=Class.forName(“android.R”);
类[]子类=RClass.getDeclaredClasses();
类RDrawable=null;
for(类子类:子类){
if(“android.R.drawable”.equals(子类.getCanonicalName())){
RDrawable=子类;
打破
}
}
List drinfo=new ArrayList();
字段[]drawables=RDrawable.getFields();
用于(现场dr:可抽出式){
Map Map=newhashmap();
Drawable img=getResources().getDrawable(dr.getInt(null));
map.put(“drimg”,dr.getInt(null));
put(“drname”,dr.getName());
添加(地图);
}
setListAdapter(新SimpleAdapter)(此,
德林福,
R.layout.listitem,
新字符串[]{“drimg”,“drname”},
新的int[]{R.id.drimg,R.id.drname});
}捕获(IllegalacessException iae){
Log.e(TAG,iae.toString());
}捕获(ClassNotFoundException cnfe){
Log.e(TAG,cnfe.toString());
}
}
}
您还可以从中获取源tarball


或者从android sdk根目录/platforms/android-X/data/res/drawable hdpi下载apk,您可以预览android sdk目录中的所有系统图标

在Mac上查找Android SDK目录:

  • 打开Android Studio.app
  • 单击菜单:
    Android Studio
    Preferences
  • 搜索
    sdk
    外观和行为
    系统设置
    Android sdk
  • 查找Android SDK位置:~/Library/Android/SDK
  • 系统图标目录:

    Android SDK位置
    /platforms/Android-
    VER(21~28)
    /data/res/drawable hdpi/

    使用
    Finder.app
    访问目录,将项目显示为图标,然后可以预览所有系统图标

    您还可以按图标名称进行搜索,例如搜索包含
    ic\u菜单的图标

    为什么APK需要电话接入?!哦,太棒了!谢谢分享:-这是答案,我不确定是否是完整的列表,但这应该是标记的接受答案。