android资源(注意不能将资源文件直接保存到res 目录,会导致编译出错)
对于应用强烈建议将资源与系统分离,包括代码里的字符串
res/row 系统不会优化的一切资源,原始文件保存,以原始input stream打开,使用资源ID调用Resources,openRawResource();
res/drowable 可绘制资源
res/animator 属性动画
res/anim 渐变动画
res/values 可放置多种文件:约定文件夹 array.xml 放资源数组 color.xml 放颜色值 dimens.xml放尺寸 string.xml放字符串 style.xml放样式
res/xml 各种xml配置文件,运行时通过调用Resources.getXml()读取。
为一组资源指定特定的资源配置符 文件夹命名格式:<resource_name>-<config_qualifier> 如: layout-sw600dp
配置限定符(限定符可追加多个用“-”分隔,追加多个时要按照表1顺序放置,不然将会被忽略)
配置 | 限定符值 | 说明 |
MCC和MNC | 如:mcc310-mnc004 | 移动国家代码(MCC)后跟SIM卡中的移动网络代码(MNC)例:mcc310 指美国的任意运营商mcc310-mnc004指美国Verizon公司; 如果使用无限电手机(GSM手机),则mcc,mnc值来自于SIM卡; |
语言和区域 | 如:en-rUS | 前两个字母代表语言+r后两个字母代表地区 用户更改系统设置中的语言引起配置变化事件 |
布局方向 | ldrtl ldltr | ldrtl布局从右到左 注:要为应用启用从右到左的布局功能,必须将supportsRtl 设置为 "true" ,并将targetSdkVersion 设置为 17 或更高版本 |
smallestWidth | sw<N>dp 如:sw320dp sw600dp sw720dp | |
可用宽度 | w<N>dp 如: w720dp w1024dp 等等 | 指定资源应该使用的最小可用屏幕宽度,以 dp 为单位, |
可用高度 | h<N>dp | 指定资源应该使用的最小可用屏幕高度, |
屏幕尺寸 | small normal large xlarge | 注:使用尺寸限定符并不表示资源仅适用于该尺寸的屏幕。 如果没有为备用资源提供最符合当前设备配置的限定符,则系统可能使用其中最合适的资源。 注意:如果所有资源均使用大于当前屏幕的尺寸限定符,则系统不会使用这些资源,并且应用在运行时将会崩溃(例如,如果所有布局资源均用 |
屏幕纵横比 | long nolong | long:宽屏 nolong:非宽屏 |
圆形屏幕 | round notround | notround :矩形屏幕 |
屏幕方向 | land port | port :纵向 land:横向 |
uI模式 | car:车载手机座上显示 desk:桌面手机座上显示 television:电视机显示 appliance:无显示屏 watch:手表 | 如果用户将设备放入手机座中,它有可能在应用生命周期中发生改变。 可以使用 UiModeManager 启用或禁用其中某些模式。 |
夜间模式 | night notnight | 如果夜间模式停留在自动模式(默认),它有可能在应用生命周期中发生改变。在这种情况下,该模式会根据当天的时间进行调整。 可以使用 UiModeManager 启用或禁用此模式 |
屏幕像素密度(dpi) | ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi nodpi tvdpi anydpi | 注:使用密度限定符并不表示资源仅适用于该密度的屏幕。 如果没有为备用资源提供最符合当前设备配置的限定符,则系统可能使用其中最匹配的资源。 |
触摸屏类型 | notouch finger | |
键盘可用性 | keysexposed keyshidden keyssoft | keysexposed:具有可用键盘,无论软硬键盘 keyshidden:硬键盘隐藏,且未启动软键盘 keyssoft:启用软件盘 如果只提供keysexposed资源未提供keyssoft资源,只要系统启用软件盘就会使用keysexposed,忽略键盘是否可见。 硬键盘插拔引起生命周期变化。 |
主要文本输入法 | nokeys qwerty 12key | nokeys:没有用于文本输入的硬键盘 qwerty:标准硬键盘 12key:12键硬键盘 |
导航键可用性 | naveexposed navhidden | naveexposed:导航键可用 navhidden:导航不可以用(例如,位于密封盖子后面) 如果用户显示导航键,它有可能在应用生命周期中发生改变 |
主要非触摸导航方法 | nonav dpad trackball wheel | nonav:除了触摸屏外,没有其他导航设施 dpad:具有用于导航的方向键 trackball:具有用于导航的轨迹球 wheel:具有方向键 |
平台版本(api级别) | 如:v3 v4 v18 | 设备支持的 API 级别。 |
注:有些配置限定符在不同平台版本才添加的,在添加配置限定符会隐式添加平台版本限定符。
限定符只能有一个值;不区分大小写;不能嵌套文件夹使用;
创建别名资源(不是所有资源都支持创建别名,特别是xml/中的动画资源,菜单资源,原始资源及其他未指定资源)
可绘制资源别名示例:原文件icon_ca.png 放置于res/drowable 别名 icon 使用<bitmap> 标签引用
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/icon_ca" />
布局资源别名示例:使用<merge> 中的 <include>标签
<?xml version="1.0" encoding="utf-8"?>
<merge>
<include layout="@layout/main_ltr"/>
</merge>
简单资源别名示例:直接将资源 ID 用作新资源的值即可
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello</string>
<string name="hi">@string/hello</string>
</resources>
----宁远笔记 2019.5.19