如何使用默认的 Android 可绘制对象

Posted

技术标签:

【中文标题】如何使用默认的 Android 可绘制对象【英文标题】:How to use default Android drawables 【发布时间】:2011-03-13 05:06:27 【问题描述】:

使用默认 android 可绘制对象时最好的方法是什么?我应该使用android.R.drawable 还是应该在我的项目中复制drawable 并使用R.drawable

是否存在风险,即在较新版本的 Android 中,某些默认可绘制对象被删除或调整大小?或者,以某种负面的方式影响我的应用程序的外观?还有,Android源代码中哪些drawable被认为是“稳定的”,应该依赖?

我宁愿不复制drawables,因为我认为应用程序的外观应该与使用的Android版本一致。因此,例如,对于 1.6 版,它应该使用 1.6 版的默认 Android 位图。

【问题讨论】:

Where are all the standard Android icon resources?的可能重复 【参考方案1】:

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

资源使用示例:android:icon="@android:drawable/ic_menu_save"

【讨论】:

这完全回答了这个问题。 但我的 SDK 中的一些可绘制对象在此列表中找不到!! 您可能使用的是较旧的 SDK 版本【参考方案2】:

据我记得,文档建议不要直接使用 android.R.drawable 中的菜单图标,并建议将它们复制到您的 drawables 文件夹中。主要原因是这些图标和名称可能会发生变化,并且可能在未来的版本中不可用。

警告:由于这些资源可以在平台版本之间更改,因此您不应使用 Android 平台资源 ID(即 android.R.drawable 下的菜单图标)引用这些图标。如果您想使用任何图标或其他内部可绘制资源,您应该将这些图标或可绘制资源的本地副本存储在您的应用程序资源中,然后从您的应用程序代码中引用本地副本。这样,即使系统的副本发生更改,您也可以保持对图标外观的控制。

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

【讨论】:

我找到了链接:developer.android.com/guide/practices/ui_guidelines/… 嗨,那么结论是什么?抄还是不抄?这个答案听起来令人信服,可以实际复制,但所有其他人都建议不要这样做。 请注意,某些drawables是由制造商修改的,并且在不同的手机上看起来会有所不同。 Motoblur 使用红色突出显示而不是橙色突出显示,因此如果您复制,复选标记和按钮(其中一些甚至在 R.drawable 中)等可绘制对象将不一致。 是的,motoblur 菜单图标也应该位于较浅的菜单背景上,因此如果您在应用程序中为它们使用较暗的背景,在所有其他手机上看起来都很好,那么 motoblur 无法识别。 Google 从图标设计菜单指南中删除了该警告。想知道为什么以及这种想法是否仍然有效?【参考方案3】:

如果您通读 android 开发组的任何讨论,您会发现他们不鼓励使用公共 SDK 中未包含的任何内容,因为其余内容可能会发生巨大变化。

【讨论】:

那么,基本上developer.android.com/reference/android/R.drawable.html的任何东西都可以不用复制直接使用? 是的……这就是我的想法。 虽然 SDK 中没有的任何东西都可以更改在技术上是正确的,但有些东西极不可能更改,如果您真的需要,您可以侥幸逃脱。最安全的做法是将您需要的图像文件从 anroid 源复制到您自己的可绘制目录中,但这意味着如果他们发布具有不同图像的新版本的 Android,您的应用会看起来很旧。 所以不要使用它。就是这样。【参考方案4】:

最好将它们复制并移动到您自己的资源中。某些资源在以前的 Android 版本上可能不可用。 Here is a link 由于@fiXedd,每个 Android 版本上都提供了所有可绘制对象

【讨论】:

感谢您提供有用的链接。但是,我不相信我应该将它们复制到我自己的资源中。 链接已损坏。能否请您在回答中解释它是关于什么的,或者将超链接重定向到正确的位置。 在提供的链接中,您可以查看每个版本的可用内容。只是想展示一些图标可能不适用于旧版本。因此,最好将它们复制并移动到您项目的资源中。此链接也可能有所帮助:androiddrawableexplorer.appspot.com 或androiddrawables.com(让你按安卓版本查看drawables)。 所有链接都坏了:(【参考方案5】:

要使用默认的android可绘制资源,不需要复制任何东西.. 你可以先用..导入它。

import android.R;

但是如果你想使用它,我会让你自己的资源出错。 错误将类似于:

R。无法解决

所以,我不喜欢import android.R,而是import *my.own.package*.R;

那么当我可以正常使用我自己的资源和R.drawable.*something* 时,不会出错, 并把android.R.*something_default* 使用默认的android资源。

【讨论】:

【参考方案6】:

最好使用 android.R.drawable,因为它是公开的并记录在案的。

【讨论】:

以上是关于如何使用默认的 Android 可绘制对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中使用 XML 作为可绘制对象创建自定义形状?

如何在 Android Studio 中使用 AsyncTask 从可绘制对象中设置图像

如何在 TextView 中将文本与其复合可绘制对象对齐?

是否可以在 Android 的可绘制对象中使用子文件夹? [复制]

Android Studio - 如何调用引用可绘制对象的方法?

如何在 Android 中以编程方式设置背景可绘制对象