Android 入门宝典 - 资源的引用

R 类

R 类将所有资源对应于自身的一个内部资源类(resourceClass:id、drawable、layout、string)

可以将各类资源打包到相应的文件夹或保存到 xml 文件中:
drawable 文件夹:放置所有 drawable 资源
values 文件夹:存放各种资源 xml 文件

  • ids.xml:id 资源,使用 item 标签,type 属性指明为 id
  • colors.xml:颜色资源,使用 color 标签,使用 #FFFFFF 形式表示
  • dimens.xml:测量资源,保存所有带单位的数值,使用 dimen 标签
  • strings.xml:字符串资源,使用 string 标签
  • styles.xml:样式资源,使用 sysle 标签标识,使用 item 标签设置属性值

详见:应用资源概览

xml 中使用资源

@resourceClass/resourceName

标识符无需在资源中定义,可直接分配:

@+id/标识符

代码中使用资源

各类型 View 都有资源的 setter 方法,如设置 Id:

setId(R.resourceClass.resourceName);

其他资源可通过 Context.getResources().getXXX(int resId) 获取。

直接使用资源:

tv_exercises.setTextColor(Color.parseColor("#0097E7"));

public static int parseColor (String colorString):Parse the color string, and return the corresponding color-int. If the string cannot be parsed, throws an IllegalArgumentException exception. Supported formats are: #RRGGBB #AARRGGBB ‘red’, ‘blue’, ‘green’, ‘black’, ‘white’, ‘gray’, ‘cyan’, ‘magenta’, ‘yellow’, ‘lightgray’, ‘darkgray’

xml 中特殊字符的使用

空格

形如 &名称;&#十进制; 或者 &#x十六进制; 是 HTML、XML 等 SGML 类语言的转义序列。

ASCII / EASCII(Extended ASCII)/Unicode 由小到大对容纳的字符进行扩展。

1 个全角空格 = 4 个普通空格。

普通空格: = = = =\u0020(HTML、XML 对多个普通空格将按照一个空格处理)

不换行空格: = = = (在词组间放置可以防止换行时分割)

 = 

 = 

 = = = 

 = 

 = 

 = 

 = 

 = 

 = 

 = 

 = 

 = = 

中日韩符号和标点符号(全角)空格: = 

https://zh.wikipedia.org/wiki/ASCII
https://zh.wikipedia.org/wiki/EASCII
https://dev.w3.org/html5/html-author/charref
http://www.unicode.org/charts/
Unicdoe【真正的完整码表】对照表(一)
使用strings.xml中文本资源发现多个空格只显示一个空格

其他

换行:\n
缩进:\t
" : ""
’ : ''
& : &&
lt(<) : &#60;&lt;
gt(>) : &#62;&gt;

资源限定符

屏幕特征限定符描述
大小small小屏幕设备的资源文件
normal中等屏幕设备的资源文件
large大屏幕设备的资源文件
xlarge超大屏幕资源的文件
sw数字dpSmallest-width Qualifier最小宽度限定符,当屏幕宽度超出数字使用此资源文件
分辨率ldpi低分辨率设备的资源文件(120dpi以下)
mdpi中等分辨率设备的资源文件(120dpi~160dpi)
hdpi高分辨率设备的资源文件(160dpi~240dpi)
xhdpi超高分辨率设备的资源文件(240dpi~320dpi)
xxhdpi超超高分辨率设备的资源文件(320dpi~480dpi)
方向land横屏设备的资源文件
port竖屏设备的资源文件

更改资源目录

https://developer.android.com/studio/write/add-resources

默认源文件资源目录在 module-name/src/source-set-name/res/,如果要换成其他目录,在 build.gradle 的 android 中添加:

android {
    sourceSets {
        main {
            res.srcDirs = ['resources/main']
        }
        debug {
            res.srcDirs = ['resources/debug']
        }
    }
}

还可以指定多个资源目录,用逗号隔开,编译工具会将它们合在一起,若不同目录出现同一资源名,合并时会出错:

android {
    sourceSets {
        main {
            res.srcDirs = ['res1', 'res2']
        }
    }
}

资源合并优先级:

编译变体 > 编译类型 > 产品特性 > 源文件 > 库依赖项(AAR、三方库)

Android 如何查找最佳匹配资源

在这里插入图片描述

  1. 消除与 Configuration 冲突的限定符
  2. 按优先级顺序识别表中各个限定符(MCC -> MNC -> 语言 -> …)
  3. 查看文件夹是否包含该限定符
  4. 不包含的资源文件夹消除,包含则继续进行 2 ~ 4,直到只剩一个资源文件夹

Configuration

https://developer.android.com/reference/android/content/res/Configuration

java.lang.Object
   ↳	android.content.res.Configuration

此类描述所有能够影响应用获取资源的设备配置信息,包括用户指定配置选项(地区、缩放)和设备配置(例如输入模式、屏幕大小和方向)。

你可以从 Resources 使用 getConfiguration 获得此类。而在 Activity 上你可以使用 ContextThemeWrapper.getResources() 获得 Resources,如下所示:

Configuration config = getResources().getConfiguration();
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值