如何使用Android自带的资源

如何使用Android自带的资源

场景介绍
项目中难免会有这样的需求,需要使用到系统自带的图标(drawable)、字符串(string)等资源,今天就主要记录一下string和drawable。
比如目前,我自己遇到这样的需求:显示一个apk或者是已经安装的应用的权限信息,并能准确描述出该权限的作用。
额,起初我的想法是酱紫的:获取出应用在AndroidManifest.xml中定义的user-permission,然后自己定义string字符串,对应起来……
可是现在当我开始正式做这个功能时,再细想当时的想法就尼玛了,这Android系统的权限就像山歌一样排队排……我自己写对应的字符串去排……要排到啥时候,那我岂不是要手写这…………………………么长的代码?
看来这个方案不可用,还是嫑这么折腾。
那怎么办?
额,看看模拟器上有什么吧:

image.png
![Uploading 微信图片_20170515171737_921546.jpg . . .]
哎哟不错哦,系统自带就有,Hiahia....。
然后通过翻看Android系统源代码啊!啊~就这么搞定了。(好直接,一点关子都不卖)
好,下面先鼓掌(手动鼓掌~)

20170515161800.jpg
额,不对,下面开始看代码:
在源代码base/core/res/AndroidManifest.xml文件中,我们最常用的联网权限是这样定义的权限:

image.png
可以看到定义的permission有android:description、 android:label两个属性。这不用解释了吧,直接看这两个引用对应的中文字符串定义:

image.png
没毛病,但是怎么用呢?
系统String
这都知道string的id了,就直接用吧~当然,普通的android.R.string. 后面怎么也点不出来的,所以这里要用特殊一点的方法获取Android自带的资源。
int lebId = Resources.getSystem().getIdentifier("permlab_accessNetworkState", "string", "android");String lab = getString(lebId);
这就获取到了permlab_accessNetworkState(INTERNET权限)的标题资源id获取字符串就是普通的通过上下文getString()就行。
完整代码:
int lebId = Resources.getSystem().getIdentifier("permlab_accessNetworkState", "string", "android");String lab = getString(lebId);Log.e(TAG, "lab : " + lab);int descId = Resources.getSystem().getIdentifier("permdesc_createNetworkSockets", "string", "android");String desc = getString(descId);Log.e(TAG, "desc : " + desc);

image.png
说了这么多,不要以为这没什么用,毕竟是获取系统级的资源,也看到了,这是自带国际化的字符串,我模拟器调成中文的语言,获取出来的就是咱伟大的国语酱紫。
那下面举一反三简单说说系统的drawable怎么用?

6af89bc8gw1f8sp6n24anj205i055t8j.jpg
系统Drawable
首先看下要显示啥玩意儿……
看了半天啊,我决定用这张,OK不?

image.png

微信图片_20170515170448.jpg
行,那就用这个吧,其实用法跟刚才那个获取字符串差不多……不信你看:
super easy for xml:

image.png
super easy for java:

image.png
super easy for display:

image.png

微信图片_20170515171003.jpg
代码解释
好,现在回头看看getIdentifier方法的文档:

image.png
name:资源名称。
defType:资源类型。
defPackage:资源所在包。
后记
其实资源还有很多……
什么?资源多肯定是老司机?
兄弟,等等,有话好好说,把你的板砖拿开点,我说的真的是这个啊:
https://developer.android.google.cn/reference/android/R.html
各种类型的资源,都有~~~哈哈哈
R.anim
R.animator
R.array
R.attr
R.bool
R.color
R.dimen
R.drawable
R.fraction
R.id
R.integer
R.interpolator
R.layout
R.menu
R.mipmap
R.plurals
R.raw
R.string
R.style
R.styleable
R.transition
R.xml

微信图片_20170515171737.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值