前言
补间动画,设置动画初始与结束状态,中间状态由系统计算并控制。Animation是抽象类,它的子类实现动画的具体行为和效果,动画帧的显示与视图关联。四种补间动画类型,平移,旋转,透明度,缩放。补间动画只是改变了View的显示效果,并没有真正改变View的属性。
作用对象
视图控件(View)如Android的TextView、Button等等,不可作用于View组件的属性,如:颜色、背景、长度等等
原理
分类
具体使用
下面分别介绍平移动画、3D翻转动画、动画组的具体实现方式.
1. 平移动画
TranslateAnimation (float fromXDelta, float toXDelta, float fromYDelta,float toYDelta)
case R.id.translateAnimationBtn:
view = findViewById(R.id.image);
Animation translateAnimation = new TranslateAnimation(0,500,0,0);
translateAnimation.setDuration(2000);
translateAnimation.setFillAfter(true);//设置是否保持动画最后状态
view.startAnimation(translateAnimation);
break;
2. 3D旋转动画
3D旋转需要使用到Camera和Matrix,camera的处理对象是matrix,将处理后的matrix应用在图片上,就会让一个平铺在屏幕上的图片产生绕x轴或者y轴旋转过后的3D效果了。参考google官方案例
调用方式:
final float centerX = view.getWidth() / 2.0f;
final float centerY = view.getHeight() / 2.0f;
final Rotate3dAnimation rotation = new Rotate3dAnimation(0, 180, centerX, centerY, 1.0f, true);
rotation.setDuration(1500);
rotation.setFillAfter(true);
rotation.setInterpolator(new AccelerateInterpolator());
view.startAnimation(rotation);
3. 组合动画
case R.id.groupAnimationBtn:
AnimationSet setAnimation = new AnimationSet(true);
setAnimation.setRepeatMode(Animation.RESTART);
setAnimation.setRepeatCount(1);
//子动画1
Animation translateAnimation1 = new TranslateAnimation(0,500,0,0);
translateAnimation1.setDuration(2000);
translateAnimation1.setFillAfter(true);
//子动画2
Animation alphaAnimation1 = new AlphaAnimation(1,0);
alphaAnimation1.setDuration(2000);
//组合
setAnimation.addAnimation(translateAnimation1);
setAnimation.addAnimation(alphaAnimation1);
view.startAnimation(setAnimation);
break;