有用的Android系统资源
Android提供了大量的系统资源( android.R
),可以节省您的时间,使您的应用程序更轻松。
例如,我最近发现Android为Yes( android.R.string.yes
),No( android.R.string.no
),Cancel( android.R.string.cancel
)和Ok( android.R.string.ok
)提供了本地化的stringandroid.R.string.ok
)等string。
你推荐使用什么其他系统资源? 或者有没有理由避免使用系统资源?
编辑:正如托马斯指出的,这些资源中的一些可能不会产生你期望的结果(尤其是android.R.string.yes/no
返回OK/Cancel
而不是Yes/No
,正如这里所报道的那样)。 为了更好地控制,您可以从Android源代码复制系统资源。
您可以在android包中find所有系统资源的完整列表。
每当我想在Android上做某些事情时,我都会检查是否有一个系统资源涵盖了我想要做的事情。 在search您可能需要的已经实现的资源时,导入Android源代码(尤其是它们的/ res /文件夹 )会很有帮助,因此您可以查看它们的具体实现。
就我个人而言,我发现自己经常使用:
- 标准任务的内置Android布局,如微调器下拉列表。
- Android ids(
android.R.id
),因为你经常需要使用这些如果你想使用一些Android的小部件(例如,TabHost/TabWidget
要求你使用“android:id/tabhost
”,“android:id/tabs
“和”android:id/tabcontent
“,如果你想实现一个XML布局)。 - 内置颜色,特别是
android.R.color.transparent
。 - Android内置的淡入淡出animation
android.R.anim
。
你可以从xml中访问系统资源 ,通过使用android软件包的名字进行限定,比如"@android:string/ok"
正如CommonsWare所提到的,您不必下载Android源代码库来检查资源; 只要到<android-sdk-dir>/platforms/android-XX/data/res/
。 但是,如果你开始使用这些,你很快就会失望地发现,它们大部分都不能通过 android.R
类获得。 大多数情况下,我必须将它们导入Eclipse工作区。 🙁
我最喜欢的资源是根据控件的焦点/按下/禁用状态显示不同的drawable(如android.R.drawable.btn_default)。 我使用这些或调整他们为我的应用程序创build自定义button。 正如你所看到的,如果你看看/data/res/drawable/btn_default.xml
,它们被定义为一个<selector>
XML元素,它在运行时被充入到StateListDrawable
中。 你也可以创build你自己的StateListDrawables,它们是非常有用的,既可以作为View背景,也可以作为一个button的“复合绘制”(参见TextView.setCompoundDrawables()
)。
请注意,翻译是非常糟糕的。
例如,Android-25中的德语“否”是“Abbrechen”,其实际上意味着“取消”。 “是”被翻译为“OK”…
我不确定其他语言有多好,所以我会使用自己的翻译。