(安卓自学笔记)四种有关控件的动画Animation
private ImageView imageView
声明四种动画
private RotateAnimation rotateAnimation;
private ScaleAnimation scaleAnimation;
private TranslateAnimation translateAnimation;
private AlphaAnimation alphaAnimation;
xxAnimation xx=new xxAnimation();
ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
参数说明:
float fromX 动画起始时 X坐标上的伸缩尺寸
float toX 动画结束时 X坐标上的伸缩尺寸
float fromY 动画起始时Y坐标上的伸缩尺寸
float toY 动画结束时Y坐标上的伸缩尺寸
int pivotXType 动画在X轴相对于物件位置类型
float pivotXValue 动画相对于物件的X坐标的开始位置
int pivotYType 动画在Y轴相对于物件位置类型
float pivotYValue 动画相对于物件的Y坐标的开始位置
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
参数说明:
float fromXDelta 动画开始的点离当前View X坐标上的差值
float toXDelta 动画结束的点离当前View X坐标上的差值
float fromYDelta 动画开始的点离当前View Y坐标上的差值
float toYDelta 动画开始的点离当前View Y坐标上的差值
AlphaAnimation(float fromAlpha,float toAlpha)
参数说明:
float fromAlpha 动画开始时透明度
float toAlpha 动画结束时透明度
四种动画的通用方法:
.setFillAfter(true);//动画执行完后是否停留在执行完的状态
.setRepeatCount(1);//设置重复次数
.setRepeatMode(android.view.animation.Animation.REVERSE);//设置重复执行模式(反方向执行)
.setDuration(1000);//设置动画持续时间 1S
.setStartOffset(long startOffset);//动画执行前的等待时间
设置一个动画的监听器
.setAnimationListener(new android.view.animation.AnimationActivity.AnimationListener() {
@Override
public void onAnimationStart(android.view.animation.AnimationActivity animation) {
}
@Override
public void onAnimationEnd(android.view.animation.AnimationActivity animation) {
imageView.startAnimation(rotateAnimation);
}
@Override
public void onAnimationRepeat(android.view.animation.AnimationActivity animation) {
}
});
设置Interpolator插值器来指定动画如何变化
.setInterpolator(new AccelerateInterpolator()); // 设置插值器
插值器种类Android 动画之Interpolator插入器,比较简单和常用的:
(1)LinearInterpolator:动画从开始到结束,变化率是线性变化。
(2)AccelerateInterpolator:动画从开始到结束,变化率是一个加速的过程。
(3)DecelerateInterpolator:动画从开始到结束,变化率是一个减速的过程。
(4)CycleInterpolator:动画从开始到结束,变化率是循环给定次数的正弦曲线。
(5)AccelerateDecelerateInterpolator:动画从开始到结束,变化率是先加速后减速的过程。
启动方式一:单一动画
imageView.startAnimation(rotateAnimation);
注明:属于更新UI操作,需要主线程消息启动方式二:多个动画
AnimationSet set=new AnimationSet(false);//整体动画设置
set.addAnimation(rotateAnimation);//
set.addAnimation(alphaAnimation);//
set.setFillAfter(true);//
imageView.startAnimation(set);//