使用默认Android drawables时最好的方法是什么?我应该使用android.R.drawable
还是应该复制项目中的drawable并使用R.drawable
?
是否有任何风险,在较新版本的Android中,某些默认的drawable被删除或调整大小?或者,以某种消极方式影响,我的应用程序的外观?此外,Android源代码中哪些drawables被认为是“稳定的”并且应该依赖它?
我宁愿不复制drawables因为我认为应用程序的外观应该与所使用的Android版本一致。因此,例如,对于版本1.6,它应该使用版本1.6的默认Android位图。
答案 0 :(得分:97)
Java用法示例:myMenuItem.setIcon(android.R.drawable.ic_menu_save);
资源使用示例:android:icon="@android:drawable/ic_menu_save"
答案 1 :(得分:34)
据我所知,文档建议不要直接使用android.R.drawable中的菜单图标,并建议将它们复制到drawables文件夹中。主要原因是这些图标和名称可能会发生变化,并且可能在将来的版本中不可用。
警告:由于这些资源可能会在平台版本之间发生变化,因此您不应使用Android平台资源ID(即android.R.drawable下的菜单图标)引用这些图标。如果要使用任何图标或其他内部可绘制资源,则应将这些图标或可绘制的本地副本存储在应用程序资源中,然后从应用程序代码中引用本地副本。这样,即使系统的副本发生变化,您也可以保持对图标外观的控制。
来自:http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html
答案 2 :(得分:21)
最好将它们复制并移动到您自己的资源中。以前的Android版本可能无法使用某些资源。 Here is a link感谢@fiXedd
,每个Android版本都提供所有drawable答案 3 :(得分:20)
如果您阅读有关Android开发小组的任何讨论,您会发现他们不鼓励使用公共SDK中没有的任何内容,因为其余内容会发生重大变化。
答案 4 :(得分:7)
要使用默认的android drawable资源,不需要复制任何东西.. 你可以先用..
导入它import android.R;
但如果您想使用它,我会让您自己的资源出错。 错误将类似于:
R上。无法解决
所以,我不想import android.R
而是import *my.own.package*.R;
然后当我可以正常使用我自己的资源R.drawable.*something*
时没有错误,
并使android.R.*something_default*
使用默认的android资源。
答案 5 :(得分:3)
最好使用android.R.drawable,因为它是公开的并且有文档记录。