第七章 管理应用程序资源
7.1.1存储应用程序资源
如果高像素屏幕使用的资源 放在drawable_hdpi中,所有像素密度均可使用的资源放在drawable中
7.1.2资源的类型
所有资源的名称必须小写
1.存储String简单资源
必须以XML头作为文件的开始
<?xml version = "1.0" encoding = "utf-8"?>
接着是根节点<resources>
然后是具体的资源
<color name = "red">#800000</color>
</resource>
2.存储图形和文件
图形放在drawable文件夹中
xml文件放在/xml中
原始文件放在res/raw中
3.存储其他资源文件
以特殊的XML文件存储,每种资源需要唯一的命名。
7.3使用不同种类的资源
7.3.1使用String资源
字符串的值使用<string>标记 使用名称-值方式来定义。
可以使用3中风格属性 分别是加粗,斜体,下划线
<string name = "test"><b>Bold</b>,<i>Italic</i>,<u>Line</u></string>
7.3.2使用格式化的字符串资源
例如:
<string name = "test">Score: %1$d of %2$d! You</string>
%1$d 意味着第一个可替换的整数
如果对上面的字符串添加字符串属性,需要对风格进行转义
实体转义必须以&开头;结尾
例如:
<i> ===== <i>
' 应该转移为 '
" 转义为 "
& 装以为 &
获取字符串
第一种:getResources().getString(ID);
第二种:CharSequence myString = getResources().getText(ID);返回值保存着文字风格
载入格式化的文本麻烦一些
格式为(%d%d%s)
String baseString = getResources().getString(ID);
String escaped = TextUtils.htmlEncode("Won"); //将html格式的变量转变成format能够识别的变量
String result = String.Format(baseString, 5, 5, escaped);
如果使用了风格
最后添加
CharSequence styledResults = Html.fromHtml(result); //转换成带有样式的字符串
7.3.3使用字符串数组
String数组使用相对应的<string-array>标记和<item>子标记
访问String数组资源的方法
getResources().getStringArray(ID)
7.3.4使用bool类型资源
定义 名称-值得方式
<bool name = ""test>true</bool>
使用
getResources().getBoolean(ID);
7.3.5
定义
<integer name = "test">20</integer>
使用
getResources().getInteger(ID);
7.3.6使用颜色
颜色值格式
#RGB #ARGB #RRGGBB #AARRGGBB
标签<coclor>
获取getResources().getColor(ID);
7.3.7使用尺寸
标记<dimen>
值单位 px:像素 in:英寸 mm:毫米 pt:点 dp:屏幕密度独立像素 sp:比例独立像素
获取getResources().getDimension(ID); //考虑到兼容性的话。多使用sp dp
7.3.8添加Drawable资源
指定一个带颜色的矩形框
获取 (ColorDrawable)getResources().getDrawable(ID);
7.3.9使用图像
推荐.png .9.png
注意:资源文件的名称必须小写且简单
2.通过程序使用图像资源
图像资源是 BitmapDrawable 如果使用的是9图 那么getDrawable()返回一个NinepatchDrawable对象
7.3.10使用动画
1.定义和使用逐帧动画
将每帧的图像定义为单独的Drawable资源
<animation-list> <item>
3.补间动画与图片无关 只是定义的动作
定义
使用
Animation an = AnimationUtils.loadAnimation(this, R.anim.spin);
7.3.11使用菜单
2.通过程序使用菜单
getMenuInflater().inflate(ID, menu);
7.3.12使用XML资源
XmlResourceParser myPets = getResources().getXml(ID);
7.1.13使用原始文件
使用InputStream file = getResources().openRawResources(ID);
7.3.14资源引用
@resource_type/variable_name
7.3.15使用布局
可以在单独的XML文件中定义常用的布局,在其他布局文件中使用
<include layout = "@layout/mygreenrect"/>
7.4引用系统资源
包名设置为@android
@android:color/darker_gray
可以通过
android.R.....来获取系统资源