
一、基本实现
1、首先定义一个ImageView
<ImageView
android:id="@+id/mImageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/lemon"
/>
2、在后台代码中初始化,并进行动画设置
/**
* 初始化View
*/
public void initView() {
mImageView=this.findViewById(R.id.mImageView);
//创建动画集
AnimationSet animationSet=new AnimationSet(true);
//缩放动画
ScaleAnimation sa=new ScaleAnimation(0,1,0,1);
sa.setDuration(3000);
//平移动画
TranslateAnimation tr=new TranslateAnimation(0,150,150,150);
tr.setDuration(3000);
//透明动画
AlphaAnimation ap=new AlphaAnimation(0,1);
ap.setDuration(3000);
//将动画组合
animationSet.addAnimation(sa);
animationSet.addAnimation(ap);
animationSet.addAnimation(tr);
mImageView.startAnimation(animationSet);
//实现动画的循环
loopAnimation();
}
解析:
1、ScaleAnimation ,缩放动画,它有4个参数:fromX,toX,fromY,toY,分别代表动画的开始坐标和动画的结束坐标。
2、Translate ,平移动画,它也是4个坐标,作用和ScaleAnimation的参数作用是一样的。
3、Alphanimation ,透明动画,它有2个参数,代表着透明度的变化。
4、AnimationSet,动画集,通过调用addAnimation()方法可以将各种不同的动画组合到一起形成一组同时进行的动画。
5、setDuration(),这个方法每个动画都有,是设置动画完成的时间的,单位是毫秒。
二、实现动画循环
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
initView();
handler.sendEmptyMessageDelayed(0,3000);//延时发送空消息
break;
}
}
};
/**
* 动画循环
*/
public void loopAnimation(){
new Thread(new Runnable() {
@Override
public void run() {
handler.sendEmptyMessageDelayed(0,3000);//延时发送空消息
}
}).start();
解析:
其实很简单,就是通过子线程和Handler的搭配来实现动态更新UI。
sendEmptyMessageDelayed()方法的作用就是延时发送消息。通过在Handler中不断发送消息来实现循环。
本文详细介绍了如何在Android中使用ImageView创建并组合多种动画效果,包括缩放、平移和透明度变化,以及如何通过子线程和Handler实现这些动画的循环播放。
1708

被折叠的 条评论
为什么被折叠?



