第113页
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@anim/motionright"
android:layout_marginTop="280px"
android:layout_marginLeft="30px" />
(4)打开默认创建的MainActivity,在onCreate()方法中,首先获取要应用动画效果的ImageView,并获取向右奔跑和向左奔跑的补间动画资源,然后获取ImageView应用的逐帧动画以及线性布局管理器,并显示一个消息提示框,再为线性布局管理器添加触摸监听器,在重写的onTouch()方法中,开始播放逐帧动画并播放向右奔跑的补间动画,最后为向右奔跑和向左奔跑的动画添加动画监听器,并在重写的onAnimationEnd()方法中改变要使用的逐帧动画和补间动画、播放动画,实现野猪来回奔跑的动画效果。具体代码如下:
final ImageView iv=(ImageView)findViewById(R.id.imageView1); //获取要应用动画效果的ImageView
//获取向右奔跑的动画资源
final Animation translateright=AnimationUtils.loadAnimation(this, R.anim.translateright);
//获取向左奔跑的动画资源
final Animation translateleft=AnimationUtils.loadAnimation(this, R.anim.translateleft);
anim=(AnimationDrawable)iv.getBackground(); //获取应用的帧动画
LinearLayout ll=(LinearLayout)findViewById(R.id.linearLayout1); //获取线性布局管理器
Toast.makeText(this,"触摸屏幕开始播放...", Toast.LENGTH_SHORT).show(); //显示一个消息提示框
ll.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
anim.start(); //开始播放帧动画
iv.startAnimation(translateright); //播放向右奔跑的动画
return false;
}
});
translateright.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
iv.setBackgroundResource(R.anim.motionleft); //重新设置ImageView应用的帧动画
iv.startAnimation(translateleft); //播放向左奔跑的动画
anim=(AnimationDrawable)iv.getBackground(); //获取应用的帧动画
anim.start(); //开始播放帧动画
}
});
translateleft.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
iv.setBackgroundResource(R.anim.motionright); //重新设置ImageView应用的帧动画
iv.startAnimation(translateright); //播放向右奔跑的动画
anim=(AnimationDrawable)iv.getBackground(); //获取应用的帧动画
anim.start(); //开始播放帧动画
}
});
运行本实例,触摸屏幕后,屏幕中的野猪将从左侧奔跑到右侧,如图9.24所示,撞到右侧的栅栏后,转身向左侧奔跑,直到撞上左侧的栅栏,再转身向右侧奔跑,如此反复。
图9.24 迷途奔跑的野猪
9.6 小 结
本章主要介绍了在Android中进行图形图像处理的相关技术,包括如何绘制2D图像、为图形添加特效以及实现动画等内容。在介绍2D图像的绘制时,主要介绍了如何绘制几何图形、文本、路径和图片等,在进行游戏开发时,经常需要应用到这些内容,需要读者重点掌握;在介绍如何实现动画效果时,主要介绍了如何实现逐帧动画和补间动画,其中,逐帧动画主要通过图片的变化来形成动画效果,而补间动画则主要体现在位置、大小、旋转度、透明度变化方面,并且只需要指定起始帧和结束帧,其他过渡帧将由系统自动计算得出。
9.7 实践与练习
1. 编写Android项目,实现探照灯效果。(答案位置:光盘\TM\sl\9\9.20)
2. 编写Android项目,实现闪烁的星星动画。(答案位置:光盘\TM\sl\9\9.21)
第10章 多媒体应用开发
( 教学录像:1小时36分钟)
随着3G时代的到来,多媒体在手机和平板电脑上广泛应用。Android作为手机和平板电脑的一个操作系统,对于多媒体应用也提供了良好的支持。它不仅支持音频和视频的播放,而且还支持音频录制和摄像头拍照。本章将对Android中的音频、视频以及摄像头拍照等多媒体应用进行详细介绍。
通过阅读本章,您可以:
★ 了解Android支持的音频和视频格式
★ 掌握使用MediaPlayer播放音频的方法
★ 掌握使用SoundPool播放音频的方法
★ 掌握如何使用VideoView播放视频
★ 掌握如何使用MediaPlayer和SurfaceView播放视频