【问题标题】:How to preview R.drawable.* images如何预览 R.drawable.* 图像
【发布时间】:2009-12-15 04:16:00
【问题描述】:

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

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

我查看了 android 源代码,但找不到这些可绘制对象的根。

如果你们有任何提示,请告诉我。 谢谢。

【问题讨论】:

  • 为什么APK需要手机访问?!哦

标签: android icons


【解决方案1】:

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

基本上就是下面的代码sn-p:

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

【讨论】:

  • 太棒了!感谢分享:-D
【解决方案2】:

android-sdk-root/platforms/android-X/data/res/drawable-hdpi

【讨论】:

  • 这是答案,我不确定它是否是完整列表,但这应该是标记为接受的答案。
  • 这条路径适用于哪个操作系统?
【解决方案3】:

我在Android 1.5 Drawables 找到了一个有用的链接,该链接指向谷歌的官方Icon Design Guidelines。它似乎包含大部分(如果不是全部)Android 的内置可绘制对象。

【讨论】:

  • 这个旧答案导致死链接
【解决方案4】:

您可以预览Android SDK目录中的所有系统图标。

在 Mac 上查找 Android SDK 目录:

  1. 打开Android Studio.app
  2. 点击菜单:Android Studio > Preferences
  3. 搜索sdkAppearance &amp; Behavior > System Settings > Android SDK
  4. 找到Android SDK Location:~/Library/Android/sdk

系统图标目录:

Android SDK Location/platforms/android-VER(21~28)/data/res/drawable-hdpi/

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

也可以按图标名称搜索,比如搜索包含ic_menu_的图标:


或在Google Fonts / Icons 中预览(不是全部)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2016-04-10
    • 2012-02-04
    相关资源
    最近更新 更多