应用资源可分为两类
:
- 可通过R资源清单类访问的资源(通常保存在res目录下)
- 原生资源(保存与assets目录下)通过assetManager以二进制流的形式读取资源
通常情况,可以使用int类型的资源清单代替应用资源
若需要使用实际资源,可通过Android的Resources类提供的方法根据资源ID获取实际资源
Resources: getXxx(int id) 根据ID来获取实际资源
getAssets() 获取访问assets/目录下资源的AssetsManager对象
代码实例: Resources res=getResources();Resources由Context调用getResources方法获取
//获取资源
String mTitle=res.getText(R.string.title);
Drawable mPic=res.getDrawable(R.drawable.pic);
int []arr=res.getIntArray(R.array.arrs);
在XML文件中使用资源
先定义
<resources>
<color name="red">#ff00</color>
<string name="h">hao</string>
<resources>
后使用
android:textColor="@color/red"
android:text="@string/h
”
字符串资源、颜色资源、尺寸资源对应的名称:R.string R.color R.dimen
由于这些资源的索引为int型
使用对应的数组
int[]colorIds=new int[]{R.color.a1,R.color.a2};
float dimen=this.getResources().getDimension(R.dimen.in_pixels)
数组资源使用(结合listview布局使用)android:entries属性
普通类型的数组
Drawable资源
支持的图像格式git、jpg, png .9.png,若XML文件作为Drawable子类的对象,同为Drawable资源
若想在程序中获得Drawable对象,使用方法getDrawable(int id)方法
(状态选择器)StateListDrawable资源
XML文件根元素<selector.../> <item.../>
状态是否获取焦点 是否按下状态 勾选 可用 激活
LayerDrawable资源按照Drawable对象数组的顺序进行绘制他们
ShapeDrawable资源(自定义绘制几何图形如:矩形、线条、圆等)
<shape adnroid:shape=["line"|"ovel"|"ring"|"rectangle"]>
定义语法如下
四个角的弧度:corners
渐变色填充:gradient
大小:size
几何形状的内边距:padding
单种颜色填充:solid
为几何形状绘制边框:stroke
举例如下:
<shape...
android:shape="rectangle">
设置填充色
<solid adnroid:color="#fff"/>
<padding android:left="4dp"/>
设置边框
<stroke android:width="3dp" android:color="#ff0"/>
ClipDrawable资源(从其它位图上截取一个片段)语法如下:
android:drawable 指定截取的源Drawable对象
android:clipOrientation:指定截取方向
android:gravity 指定截取的时的对齐方式
使用ClipDrawable对象可调用setLevel(int level)方法设置截取区域的大小 0表示截取片段为空,10000表示整张图片
AnimationDrawable资源
通过透明度、位置、缩放、旋转达到动画效果
重要参数
fromXxx toXxx属性,定义的是开始状态、结束状态
android:interpolator指的是动画的变化速度(匀速、正加速等)
可以写XML文件定义动画的时间、缩放或位移等变换
在需要加载使用时对象去访问
在Java代码中可以通过AnimatationUtils.loadAnimation(Context ctx,int resId)获得实际的Animation对象
image.startAnimation(anim)即可让图片加载动画效果
XML资源(解析)
XmlResourceParser getXml(int id) 获取XML文档,并使用XmlPullParser来解析该文档(XmlResourcesParser是XmlPullParser的子类)
InputStream openRawResource(int id)获取XML文档的输入流,可选择解析器来解析该XML资源。(Android内置Pull解析器,使用DOM,SAX或者其它解析器,需自行下载对应的jar包)
格式如下
获得解析器对象
XmlResourcesParser xrp=getResources().getXml(R.xml.names);
StringBuilder sb=new StringBuilder(“”);
根据标签节点类型判断(标签START_TAG tagName.equals(“name”))
while(xrp.getEventType!=XmlResourceParser.END_DOCUMENT){
根据节点事件和标签响应 xrp.next(); 继续解析
样式(Style)与主题(Theme)
由于经常出现多个相同格式的集合,方便继承和简化代码
name 样式的名称
parent 继承的父样式
包含item标签
通过@style/style1就可直接使用相同的样式参数
主题不作用于单个View组件,对Activity起作用
格式如下:
<style name="ATheme">
<item name="android:windowNoTitle"> true</item>
…
在Java代码中setTheme(R.style.ATheme);即可使用
若想在全部窗口使用这个主题,则在清单文件application节点 android:theme=@style/ATheme即可
5.0之后新增Material主题,百度查阅