2010-07-08 146 views
47

使用默認的Android drawables的最佳方法是什麼?我應該使用android.R.drawable還是應該在我的項目中複製drawable並使用R.drawable如何使用默認的Android drawables

是否有任何風險,在更新版本的Android中,某些默認drawable被刪除或調整大小?或者,以一些負面的方式影響我的應用程序的外觀?另外,Android源代碼中的哪些可繪圖被認爲是「穩定的」並且應該依賴?

我寧願不復制drawables,因爲我認爲應用的外觀應該與所使用的Android版本保持一致。因此,例如,對於版本1.6,它應該使用版本1.6的默認Android位圖。

+1

http://androiddrawables.com/具有可用於每個版本的默認可繪製的列表。 – 2016-01-10 20:03:12

+0

可能重複的[所有的標準Android圖標資源在哪裏?](http://stackoverflow.com/questions/7352898/where-are-all-the-standard-android-icon-resources) – 2016-02-08 20:17:43

回答

20

如果您通過任何在Android開發團隊的討論看,你會看到,他們鼓勵使用的東西,是不是在公共SDK,因爲剩下的就是受廣泛的變化。

+4

因此,基本上,可以直接使用http://developer.android.com/reference/android/R.drawable.html中的任何內容而無需複製? – 2010-07-08 13:53:10

+0

是的......這就是我想的。 – androidworkz 2010-07-08 18:34:33

+4

儘管從技術角度而言,SDK中沒有任何東西可以改變是正確的,但有些東西是不太可能改變的,如果你真的需要,你可以放棄它。最安全的做法是將您需要的圖片文件從anroid源文件複製到您自己的可繪製目錄中,但這意味着如果他們發佈具有不同圖片的新版Android,您的應用程序將顯得陳舊。 – OldSchool4664 2013-05-07 18:52:11

3

更好地使用android.R.drawable,因爲它是公開的和記錄的。

21

更好地複製並將它們移動到自己的資源。以前的Android版本可能無法使用某些資源。 Here is a link在每個Android版本上提供所有繪圖工具,感謝@fiXedd

+0

感謝您的有用鏈接。但是,我不相信我應該將它們複製到我自己的資源中。 – 2010-07-08 10:21:40

+0

鏈接已損壞。你能否在你的回答中解釋它是什麼或將超鏈接重定向到正確的位置。 – 2012-01-17 14:34:33

+0

在提供的鏈接中,您可以看到每個版本可用的內容。只是想展示一些圖標可能不適用於舊版本。所以最好將其複製並移動到項目資源中。這個鏈接也可能有所幫助:http://androiddrawableexplorer.appspot.com/ – ggomeze 2012-01-18 14:57:55

33

據我所知,文檔建議不要直接使用android.R.drawable中的菜單圖標,並建議將它們複製到drawables文件夾中。主要原因是這些圖標和名稱可能會發生變化,並可能在未來版本中不可用。

警告:因爲這些資源可以在平臺版本之間更改,所以不應該使用Android平臺資源ID(即android.R.drawable下的菜單圖標)引用這些圖標。如果要使用任何圖標或其他內部可繪製資源,則應在應用程序資源中存儲這些圖標或繪圖的本地副本,然後從應用程序代碼中引用本地副本。這樣,即使系統的副本發生更改,您也可以保持對圖標外觀的控制。

來自:http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html

+0

我找到了鏈接:http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#menuapx – 2010-07-09 06:58:04

+0

嗨,那麼結論是什麼?要複製還是不復制?這個答案聽起來很有說服力,但其他所有人都會反對。 – kiki 2010-10-12 12:56:57

+2

請注意,有些繪圖是由製造商修改的,並且在不同的手機上看起來會有所不同。 Motoblur使用紅色突出顯示而不是橙色,因此,如果複製副本,那麼可以使用諸如複選標記和按鈕之類的可繪製對象(其中一些甚至位於R.drawable中)將不一致。 – idbrii 2010-12-02 23:08:53

6

要使用默認的Android繪製資源,無需複製任何東西.. 你可以只用第一導入它。

import android.R; 

,但我會做,如果你想自己的資源將有一個錯誤用它。 錯誤將是這樣的:

R.不能得到解決

所以,我寧願不import android.Rimport *my.own.package*.R;

然後當我可以正常使用自己的資源與R.drawable.*something*無錯誤, 並把android.R.*something_default*使用默認的Android資源。

81

的Java用法示例:myMenuItem.setIcon(android.R.drawable.ic_menu_save);

資源使用例如:android:icon="@android:drawable/ic_menu_save"

+0

這完全回答了問題。 – hopia 2013-09-04 22:52:50

+0

但我的SDK中沒有找到這個列表中的一些drawable! – 2016-08-26 09:35:35

+0

您可能正在使用較舊的SDK版本 – IcedDante 2017-10-02 02:29:19