- Android资源分两类:
- 无法通过R清单类访问的原生资源,保存在assets目录下,R资源类的路径:..\build\generated\source\r\debug\工程名
- 可以通过R清单类访问的原生资源,保存在res目录下
- Resources类:资源管理类
- Context.getResources()方法获取Resources对象
- Context.getAssets()获取访问/assets目的资源的AssetManager对象
- getXxx(int id):根据资源Id获取实际的资源
- XmlResourceParser getXml:获取xml文档,返回XmlPullParser解析器
- InputStream openRawResource:获取xml文档对应的输入流
- TypedArray obtainTypedArray(int id):根据资源文件中普通数组资源的名称来获取实际的普通数组,即<Resources>元素中包含多个类型数组时,可以先用数组名获取TypedArray,在调用TypedArray.getXxx()获取索引值
- Xml中访问资源的方法:@[<package_name>:]<resource_type>/<resource_name>,如
<EditText android:name="@string/hello"> - 字符串,整型,颜色,数组,布尔型,style,theme,dimen,attr等都放在/res/values路径下,这些资源文件的根元素都是<resources>元素
- Android不推荐在代码中定义数组,而是使用资源文件定义数组,定义数组时array.xml中的根元素是<resources>,该元素内包含三种子元素:
- <array>:定义普通类型的数组
- <string-array>:定义字符串数组
- <integer-array>定义整数数组
- Drawable: 不仅图片可以作为Drawable资源,xml文件也可以作为Drawable资源,只要xml文件可以被编译为Drawable子类对象.
- StateListDrawable资源:用于组织多个Drawable对象,定义StateListDrawable对象的xml文件的根元素是<selector>,该元素包含多个<item>元素,item元素的属性有
- android:color或者android:drawable:指定颜色或者Drawable对象
- android:state_xxx:指定一个特定的状态,可以在不同不同state时 为控件设定不同的Drawable对象
- LayerDrawable资源:也可以包含Drawable数组,定义LayerDrawable对象的xml文件的根元素是<layer-list>,系统会按照Drawable对象的数组顺序来绘制他们,索引最大的在最上方,该元素可以包含多个<item>元素,item元素可以指定如下属性:
- android:drawable:作为LayerDrawable元素之一的Drawable对象
- android:id:为drawable对象指定一个标识
- android:buttom\top\left\button:指定一个长度值,将Drawable对象绘制到目标组件的指定位置
- ShapeDrawable资源:用于定义一个基本的几何图形,定义ShapeDrawable的xml文件的根元素是<shape>元素,该元素可以指定如下属性:
- android:shape=["rectangle"|"oval"|"line"|"ring"]:指定定义哪些类型的集合图形
- ClipDrawable资源:代表从其他位图上截取的一个图片片段,在xml文件中根元素为<clip>,可以指定的属性如下:
- android:drawable:截取的源Drawable对象
- android:clipOrientation:指定截取方向,可以设置水平或竖直
- android:gravity:指定截取时的对齐方向
- AnimationDrawable资源:代表一个动画,在xml文件中跟元素为<set>
- 样式资源文件的根元素是<resources>元素,元素内包含多个<style>子元素,每个style元素包含如下两个属性。style元素可以设置view.styele属性值
- name:指定样式的名称
- parent:指定该样式所继承的父样式
- 主题资源文件的根元素是<resource>元素,但多数时候在<application>元素中,通过android:theme配置主题,元素内包含多个<style>子元素,主题与样式的区别是:
- 主题不能作用于单个的View组件,主题应该对整个应用中的所有Activity起作用,或者对指定的Activity起作用
- 主题定义的格式应该是改变窗口外观的格式,如窗口标题,窗口边框等
- 属性资源:如果用户开发的自定义View组件也需要指定属性,就需要属性资源文件,属性文件所定义的属性到底起什么作用,取决于自定义组件代码的实现。属性资源文件的根元素也是<resources>,包含两个子元素,Android会自动生成R.styleable的资源类
- <attr>:定义一个属性
- <declare-styleable>:定义一个styleable对象,每个styleable对象就是一组attr属性的集合
- Inset drawable:定义在xml中,以指定间距插入一个drawable对象,常用与设置View的background,使background小于View的边界,语法如下:
<inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:insetTop="dimension" android:insetRight="dimension" android:insetBottom="dimension" android:insetLeft="dimension" />
时间: 2024-10-24 02:11:31