1、资源的类型及存储方式:
Android要求在res目录下用不同的子目录保存不同的应用资源,下表显示Android不同资源在/res目录下的存储方式:
目录
存放的资源
/res/anim/ 存放定义补间动画的XML文件。适用的关键XML元素:<set>、<alpha>、<scale>、<translate>、<rotate> /res/color/ 存放定义不同状态下颜色列表的XML文件
/res/drawable/该目录下存放各种位图文件(如*.png、*.9.png、*.jpg*、.gif)等,除此之外还可是编译成如下各种Drawable对象的XML文件:
BitmapDrawable
NinePatchDrawable对象
StateListDrawable对象
ShapeDrawable对象
AnimationDrawable对象
Drawable的其它各种子类的对象
/res/layout/ 存放各种用户界面的布局文件 /res/menu/ 存放为应用程序定义各种菜单的资源,包括选项菜单、子菜单、上下文菜单资源。在代码中通过MenuInflater使用 /res/raw/ 该目录下存放任意类型的原生资源。在java代码中通过调用Resource对象的openRawResource(int id)方法获取该资源的二进制输入流。 实际上,如果应用程序使用原生资源,推荐把这些原生资源保存到/assrts目录下,然后在应用程序中使用AssetManager来访问这些资源。
/res/values/ 存放各种简单的XML文件。这些简单值包括字符串值、整数值、颜色值、数组等。 字符串、整数值、颜色值、数组等各种值都是存放在该目录下,而且这些资源文件的根目录都是<resources.../>元素,当我们为该<resource.../>元素添加不同的子元素则代表不同的资源,例如:
string/integer/bool子元素:代表添加一个字符串值/整数值/boolean值
color子元素:代表添加一个颜色值
array子元素或string-array、int-array子元素:代表添加一个数组
<?xml version="1.0" encoding="utf-8">
<resources>
<string-array name="flavors">
<item>Vanilla Bean<item>
<item>Coffee, Coffee, Buzz Buzz<item>
</string-array>
在java代码中调用资源:</resources>
String[] aflavors=getResources().getStringArray(R.array.flavors);
style子元素:代表添加一个样式
dimen:代表添加一个尺寸
由于各种简单值都可以定义在/res/values/目录下的资源文件中,如果在同一份资源文件中定义各种值,势必增加程序维护的难度。为此,Android建议使用不同的文件来存放不同类型的值:
arrays.xml:定义数组资源
colors.xml:定义颜色值资源
dimens.xml:定义尺寸值资源
strings.xml:定义字符串资源 eg: String myString=getResources().getString(R.string.hello)
styles.xml:定义样式资源
/res/xml/ 任意的原声XML文件。这些XML文件可在java代码中使用Resources.getXML()访问。
1)在xml中定义动画
a、<alpha>
- <?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android" >
- <alpha
- android:fromAlpha="0.1"
- android:toAlpha="1.0"
- android:duration="3000"
- />
- <!-- 透明度控制动画效果 alpha
-
浮点型值: -
fromAlpha 属性为动画起始时透明度 -
toAlpha 属性为动画结束时透明度 -
说明: -
0.0表示完全透明 -
1.0表示完全不透明 -
以上值取0.0-1.0之间的float数据类型的数字 -
-
长整型值: -
duration 属性为动画持续时间 -
说明: -
时间以毫秒为单位 - -->
- </set>
b、<scale>
- <?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android">
-
<scale -
android:interpolator= -
"@android:anim/accelerate_decelerate_interpolator" -
android:fromXScale="0.0" -
android:toXScale="1.4" -
android:fromYScale="0.0" -
android:toYScale="1.4" -
android:pivotX="50%" -
android:pivotY="50%" -
android:fillAfter="false" -
android:duration="700" /> - </set>
- <!-- 尺寸伸缩动画效果 scale
-
属性:interpolator 指定一个动画的插入器 -
在我试验过程中,使用android.res.anim中的资源时候发现 -
有三种动画插入器: -
accelerate_decelerate_interpolator 加速-减速 动画插入器 -
accelerate_interpolator 加速-动画插入器 -
decelerate_interpolator 减速- 动画插入器 -
其他的属于特定的动画效果 -
浮点型值: -
-
fromXScale 属性为动画起始时 X坐标上的伸缩尺寸 -
toXScale 属性为动画结束时 X坐标上的伸缩尺寸 -
-
fromYScale 属性为动画起始时Y坐标上的伸缩尺寸 -
toYScale 属性为动画结束时Y坐标上的伸缩尺寸 -
-
说明: -
以上四种属性值 -
-
0.0表示收缩到没有 -
1.0表示正常无伸缩 -
值小于1.0表示收缩 -
值大于1.0表示放大 -
-
pivotX 属性为动画相对于物件的X坐标的开始位置 -
pivotY 属性为动画相对于物件的Y坐标的开始位置 -
-
说明: -
以上两个属性值 从0%-100%中取值 -
50%为物件的X或Y方向坐标上的中点位置 -
-
长整型值: -
duration 属性为动画持续时间 -
说明: 时间以毫秒为单位 -
-
布尔型值: -
fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用 - -->
c、<translate>
- <?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android">
- <translate
- android:fromXDelta="30"
- android:toXDelta="-80"
- android:fromYDelta="30"
- android:toYDelta="300"
- android:duration="2000"
- />
- <!-- translate 位置转移动画效果
-
整型值: -
fromXDelta 属性为动画起始时 X坐标上的位置 -
toXDelta 属性为动画结束时 X坐标上的位置 -
fromYDelta 属性为动画起始时 Y坐标上的位置 -
toYDelta 属性为动画结束时 Y坐标上的位置 -
注意: -
没有指定fromXType toXType fromYType toYType 时候, -
默认是以自己为相对参照物 -
长整型值: -
duration 属性为动画持续时间 -
说明: 时间以毫秒为单位 - -->
- </set>
d、<rotate>
- <?xml version="1.0" encoding="utf-8"?>
- <set xmlns:android="http://schemas.android.com/apk/res/android">
- <rotate
-
android:interpolator="@android:anim/accelerate_decelerate_interpolator" -
android:fromDegrees="0" -
android:toDegrees="+350" -
android:pivotX="50%" -
android:pivotY="50%" -
android:duration="3000" /> - <!-- rotate 旋转动画效果
-
属性:interpolator 指定一个动画的插入器 -
在我试验过程中,使用android.res.anim中的资源时候发现 -
有三种动画插入器: -
accelerate_decelerate_interpolator 加速-减速 动画插入器 -
accelerate_interpolator 加速-动画插入器 -
decelerate_interpolator 减速- 动画插入器 -
其他的属于特定的动画效果 -
-
浮点数型值: -
fromDegrees 属性为动画起始时物件的角度 -
toDegrees 属性为动画结束时物件旋转的角度 可以大于360度 -
-
-
说明: -
当角度为负数——表示逆时针旋转 -
当角度为正数——表示顺时针旋转 -
(负数from——to正数:顺时针旋转) -
(负数from——to负数:逆时针旋转) -
(正数from——to正数:顺时针旋转) -
(正数from——to负数:逆时针旋转) -
-
pivotX 属性为动画相对于物件的X坐标的开始位置 -
pivotY 属性为动画相对于物件的Y坐标的开始位置 -
-
说明: 以上两个属性值 从0%-100%中取值 -
50%为物件的X或Y方向坐标上的中点位置 -
-
长整型值: -
duration 属性为动画持续时间 -
说明: 时间以毫秒为单位 - -->
- </set>
2)如何使用xml中的动画效果
- public static Animation loadAnimation (Context context, int id)
-
//第一个参数Context为程序的上下文
- //第二个参数id为动画XML文件的引用
- //例子:
- myAnimation= AnimationUtils.loadAnimation(this,R.anim.my_action);
- //使用AnimationUtils类的静态方法loadAnimation()来加载XML中的动画XML文件
3)如何在Java代码中定义动画
- //在代码中定义 动画实例对象
- private Animation myAnimation_Alpha;
- private Animation myAnimation_Scale;
- private Animation myAnimation_Translate;
- private Animation myAnimation_Rotate;
-
-
//根据各自的构造方法来初始化一个实例对象 - myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
-
- myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
-
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); - /**
- ScaleAnimation(float fromX, float toX, float fromY, float toY,
-
int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) -
//第一个参数fromX为动画起始时 X坐标上的伸缩尺寸
-
//第二个参数toX为动画结束时 X坐标上的伸缩尺寸
-
//第三个参数fromY为动画起始时Y坐标上的伸缩尺寸
-
//第四个参数toY为动画结束时Y坐标上的伸缩尺寸
-
-
//第五个参数pivotXType为动画在X轴相对于物件位置类型
- //第六个参数pivotXValue为动画相对于物件的X坐标的开始位置
-
//第七个参数pivotXType为动画在Y轴相对于物件位置类型
- //第八个参数pivotYValue为动画相对于物件的Y坐标的开始位置
- **/
- myAnimation_Translate=new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);
- /**
-
TranslateAnimation(float
fromXDelta, float toXDelta,
-
float fromYDelta, float toYDelta)
-
//第一个参数fromXDelta为动画起始时 X坐标上的移动位置
-
//第二个参数toXDelta为动画结束时 X坐标上的移动位置
-
//第三个参数fromYDelta为动画起始时Y坐标上的移动位置
- //第四个参数toYDelta为动画结束时Y坐标上的移动位置
- */
- myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,
-
Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f); - /**
-
RotateAnimation(float
fromDegrees, float toDegrees,
-
int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
-
//第一个参数fromDegrees为动画起始时的旋转角度
-
//第二个参数toDegrees为动画旋转到的角度
-
//第三个参数pivotXType为动画在X轴相对于物件位置类型
-
//第四个参数pivotXValue为动画相对于物件的X坐标的开始位置
-
//第五个参数pivotXType为动画在Y轴相对于物件位置类型
- //第六个参数pivotYValue为动画相对于物件的Y坐标的开始位置
- */