2009-12-15 119 views
12

Android框架具有各種圖標和圖像 - 可以像R.drawable。*那樣訪問 - 可供應用程序用於常見任務。他們的名字給了他們一些提示,但在很多情況下這還不夠。必須使用trial-n-error才能找到適合自己用途的正確圖標。如何預覽R.drawable。*圖像

我的問題:有沒有一種方法可以在一個位置預覽所有這些圖像,以便我可以快速決定使用哪些圖像?

我已經看過Android的源代碼中,但無法找到這些可繪製的根源。

讓我知道如果您有任何的任何提示。 謝謝。

+1

爲什麼APK需要手機訪問? Oo – 2011-02-14 02:01:44

回答

17

謝謝科裏,這幾乎是我一直在尋找。與此同時,我製作了一個小應用程序來預覽所有可繪圖。這是一個小應用程序,它使用反射來列出所有可繪圖(圖像預覽及其名稱),如本屏幕截圖所示。

alt text

它基本上下面的代碼片段:

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

或APK從http://www.altcanvas.com/downloads/apks/drawablepreview.apk

+0

令人驚歎!感謝分享:-D – rubdottocom

12

Android的SDK根/平臺的源碼包/ android-X/data/res/drawable-hdpi

+1

下面是答案,我不確定它是否是完整列表,但這應該是標記的接受答案。 –