Android应用的资源

  • Android应用的源代码分为3类:
    • xml
    • Java代码
    • 资源文件
  • 资源文件主要是提高代码的可维护性
  • 资源文件有字符串资源、颜色资源、数组资源、菜单资源等都集中在放在res中
  • assets也存放部分资源,需要通过AssetManager以二进制流的形式访问

一、 应用资源概述

  • assert:无法通过R资源菜单访问
  • res:可以通过R资源菜单访问

1. 资源的类型和存储方式

  • P290 表6.1

2. 使用资源

  • Java代码中使用资源清单项
    • [package_name].R.[resource_type].[resource_name]
  • 在Java代码中访问实际资源
    • getXxx(int id)
    • getAsserts()
  • 在xml文件中使用资源
    • 直接引用资源

二、字符串、颜色、尺寸资源

1. 颜色值的定义

  • Alpha-Red-Green-Blue,Alpha值可以省略

2. 定义字符串、颜色、尺寸资源文件

  • 字符串资源文件位于values目录下,根元素为resource…,该元素里每个子元素string定义一个字符串常量,name值指定常量的名称,标签之间的内容代表字符串值
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">字符串、颜色、尺寸资源</string>
    <string name="c1">F00</string>
    <string name="c2">0F0</string>
    <string name="c3">00F</string>
    <string name="c4">0FF</string>
    <string name="c5">F0F</string>
    <string name="c6">FF0</string>
    <string name="c7">07F</string>
    <string name="c8">70F</string>
    <string name="c9">F70</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="c1">#F00</color>
    <color name="c2">#0F0</color>
    <color name="c3">#00F</color>
    <color name="c4">#0FF</color>
    <color name="c5">#F0F</color>
    <color name="c6">#FF0</color>
    <color name="c7">#07F</color>
    <color name="c8">#70F</color>
    <color name="c9">#F70</color>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="spacing">8dp</dimen>
    <!-- 定义GridView组件中每个单元格的宽度、高度 -->
    <dimen name="cell_width">60dp</dimen>
    <dimen name="cell_height">66dp</dimen>
    <!-- 定义主程序的标题的字体大小 -->
    <dimen name="title_font_size">18sp</dimen>
</resources>

3. 使用字符串、颜色、尺寸资源

  • @[resource_type]/[resource_name]
  • R.[resource_type]/[resource_name]

三、Array资源

  • 位于values目录下的arrays.xml中,根元素为resource,该元素内包含如下三种子元素
    • array…
    • string-array…
    • interger-array…
  • 访问资源:
    • R.array.array_name
    • @array/array_name
  • Resource 提供的方法
    • String[] getStringArray(int id)
    • int[] getIntArray(int id)
    • TypedArray obtain TypedArray(int id)

四、使用Drawable资源

1. 图片资源

  • 直接把png、jpg、gif、放在drawable中

2. StateListDrawable资源

  • 主要用来组织多个Drawable对象,随状态改变而改变
  • 根元素为selector,子元素为item
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 指定获得焦点时的颜色 -->
    <item android:state_focused="true"
          android:color="#f44"/>
    <!-- 指定失去焦点时的颜色 -->
    <item android:state_focused="false"
          android:color="#ccf"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- 使用StateListDrawable资源 -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@drawable/my_image"/>
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@drawable/my_image"/>
</LinearLayout>

3. LayerDrawable 资源

  • Drawable对象的数组顺序来绘制,索引最大的会被绘制在最上面
  • 根元素为layer-list…,子元素为item

4. ShapeDrawable 资源

  • 主要用来绘制几何图形,根元素为shape
    • rectangle
    • oval
    • ring
    • line

5. ClipDrawable资源

  • 主要从其他位图上截取一个图片片段,根元素为clip
    • drawable:指定截取的源Drawable对象
    • clipOrientation:指定截取的方向,水平截取或垂直截取
    • gravity:指定截取时的对齐方式
    • setLevel()控制截取图片的部分

6. AnimationDrawable资源

  • 可以用在补间动画方面
  • 能满足View进行移动、缩放、旋转和淡入淡出的操作,超出此范围要用属性动画
  • 定义补间动画以set作为根节点
    • alpha
    • scale
    • translate
    • rotate
  • 补间动画只需要设置开始状态和结束状态,android自动调用动画效果
  • interpolator属性用在调节动画速度方面
    • linear_interpolator:匀速变换
    • accelerate_interpolator:加速变换
    • decelerate_interpolator:减速变换

五、属性动画资源

  • < set/…>是个父元素,包含着
    • < objectAnimator…/>:用于定义ObjectAnimator动画
    • < animator…/>:用于定义ValueAnimator动画
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="backgroundColor"
    android:duration="3000"
    android:valueFrom="#FF8080"
    android:valueTo="#8080FF"
    android:repeatCount="infinite"
    android:repeatMode="reverse"
    android:valueType="intType">
</objectAnimator>
public class MyAnimationView extends View
    {
        public MyAnimationView(Context context)
        {
            super(context);
            // 加载动画资源
            ObjectAnimator colorAnim = (ObjectAnimator) AnimatorInflater
                    .loadAnimator(MainActivity.this, R.animator.color_anim);
            colorAnim.setEvaluator(new ArgbEvaluator());
            // 对该View本身应用属性动画
            colorAnim.setTarget(this);
            // 开始指定动画
            colorAnim.start();
        }
    }

六、使用原始xml资源

1.定义原始xml资源

获取方式:

  • xml中: xml/file_name

  • Java代码中:

    • R.xml.filename

      • XmlResourceParser getXml(int id)
      • InputStream openRawResource(int id)

七、自适应不同屏幕资源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值