首页 > 代码库 > Android 资源

Android 资源

  1. Android资源分两类:
    • 无法通过R清单类访问的原生资源,保存在assets目录下,R资源类的路径:..\build\generated\source\r\debug\工程名
    • 可以通过R清单类访问的原生资源,保存在res目录下

  2. 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()获取索引值

  3. Xml中访问资源的方法:@[<package_name>:]<resource_type>/<resource_name>,如
    <EditText android:name="@string/hello">


  4. 字符串,整型,颜色,数组,布尔型,style,theme,dimen,attr等都放在/res/values路径下,这些资源文件的根元素都是<resources>元素

  5. Android不推荐在代码中定义数组,而是使用资源文件定义数组,定义数组时array.xml中的根元素是<resources>,该元素内包含三种子元素:
    • <array>:定义普通类型的数组
    • <string-array>:定义字符串数组
    • <integer-array>定义整数数组

  6. 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>

  7. 样式资源文件的根元素是<resources>元素,元素内包含多个<style>子元素,每个style元素包含如下两个属性。style元素可以设置view.styele属性值
    • name:指定样式的名称
    • parent:指定该样式所继承的父样式

  8. 主题资源文件的根元素是<resource>元素,但多数时候在<application>元素中,通过android:theme配置主题,元素内包含多个<style>子元素,主题与样式的区别是:
    • 主题不能作用于单个的View组件,主题应该对整个应用中的所有Activity起作用,或者对指定的Activity起作用
    • 主题定义的格式应该是改变窗口外观的格式,如窗口标题,窗口边框等

  9. 属性资源:如果用户开发的自定义View组件也需要指定属性,就需要属性资源文件,属性文件所定义的属性到底起什么作用,取决于自定义组件代码的实现。属性资源文件的根元素也是<resources>,包含两个子元素,Android会自动生成R.styleable的资源类
    • <attr>:定义一个属性
    • <declare-styleable>:定义一个styleable对象,每个styleable对象就是一组attr属性的集合
  10. 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" />
 
 
         

 

Android 资源