第110页
android:id="@+id/ll"
android:orientation="vertical" >
(3)打开默认创建的MainActivity,在该文件中,首先创建一个名称为MyView的内部类,该类继承自android.view.View类,并添加构造方法和重写onDraw(Canvas canvas)方法,然后在onCreate()方法中获取布局文件中添加的帧布局管理器,并将MyView视图添加到该帧布局管理器中。
LinearLayout ll=(LinearLayout)findViewById(R.id.ll); //获取布局文件中添加的线性布局管理器
final AnimationDrawable anim=(AnimationDrawable)ll.getBackground(); //获取AnimationDrawable对象
//为线性布局管理器添加单击事件监听器
ll.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(flag){
anim.start(); //开始播放动画
flag=false;
}else{
anim.stop(); //停止播放动画
flag=true;
}
}
});
运行本实例并单击屏幕,将播放自定义的逐帧动画,如图9.20所示。当动画播放时,单击屏幕,将停止动画的播放,再次单击屏幕,将继续播放动画。
图9.20 忐忑的精灵
9.4.4 范例2:旋转、平移、缩放和透明度渐变的补间动画
例9.17 在Eclipse中创建Android项目,名称为9.17,实现旋转、平移、缩放和透明度渐变的补间动画。(实例位置:光盘\TM\sl\9\9.17)
(1)在新建项目的res目录中,创建一个名称为anim的目录,并在该目录中创建实现旋转、平移、缩放和透明度渐变的动画资源文件。
① 创建名称为anim_alpha.xml的XML资源文件,在该文件中定义一个实现透明度渐变的动画,该动画的渐变过程为“完全不透明→完全透明→完全不透明”,具体代码如下:
android:toAlpha="0"
android:fillAfter="true"
android:repeatMode="reverse"
android:repeatCount="1"
android:duration="2000"/>
② 创建名称为anim_rotate.xml的XML资源文件,在该文件中定义一个实现旋转的动画,该动画为从0°旋转到720°,再从360°旋转到0°,具体代码如下:
android:interpolator="@android:anim/accelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="720"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000">
android:interpolator="@android:anim/accelerate_interpolator"
android:startOffset="2000"
android:fromDegrees="360"
android:toDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000">
③ 创建名称为anim_scale.xml的XML资源文件,在该文件中定义一个实现缩放的动画,该动画首先将原图像放大2倍,再逐渐收缩为图像的原尺寸,具体代码如下:
android:interpolator="@android:anim/decelerate_interpolator"
android:fromYScale="1"
android:toXScale="2.0"
android:toYScale="2.0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="true"
android:repeatCount="1"
android:repeatMode="reverse"
android:duration="2000"/>
④ 创建名称为anim_translate.xml的XML资源文件,在该文件中定义一个实现平移的动画,该动画为从屏幕的左侧移动到屏幕的右侧,再从屏幕的右侧返回到左侧,具体代码如下:
android:fromXDelta="0"
android:toXDelta="860"
android:fromYDelta="0"
android:toYDelta="0"
android:fillAfter="true"
android:repeatMode="reverse"
android:repeatCount="1"
android:duration="2000">
(2)修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的TextView组件删除,然后在默认添加的线性布局管理器中添加一个水平线性布局管理器和一个ImageView组件,再向该水平线性布局管理器中添加4个Button组件,最后设置ImageView组件的左边距和要显示的图片,具体代码请参见光盘。