在Android中定义了2类animation
1.Tween Animation(补间动画)
通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画
2.Frame Animation(帧动画)
顺序播放事先做好的图像,是一种画面转换动画,好比放电影。
以下具体介绍这两类动画
Tween Animation
在XML中定义具体的动画 位置为:res/anim/fileName.xml(具体文件名)。
实际的文件名将被当做resource ID 在java代码 或者其他XML中被引用。
在XML中基本语法:
这个文件必须包含一个根元素,可以是
一个容器 可以包含 (
,
,
,
) or other
元素。 在set中设置的属性 (for example, duration or fillBefore), 将覆盖它所包含的类型的设置的同一属性。
属性:
android:interpolator
interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果可以 accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。
android 自带的interpolator
AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator 动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator 以常量速率改变
OvershootInterpolator 向前甩一定值后再回到原来位置
如果android定义的interpolators不符合你的效果也可以自定义interpolators
例子:
XML file saved at res/anim/my_overshoot_interpolator.xml
:
/>
android:shareInterpolator
Boolean. "true" if you want to share the same interpolator among all child elements
例子:
android:toAlpha="0" //Float表示 结束透明度 0.0 透明 1.0 不透明 /> 例子: 在应用程序中应用动画 Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); findViewById(R.id.pw).startAnimation(shake); 语法: 属性: android:oneshot "true" if you want to perform the animation once; "false" to loop the animation 属性: Drawable resource. The drawable to use for this frame. Integer. The duration to show this frame, in milliseconds. 在应用程序中应用 ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = (AnimationDrawable) rocketImage.getBackground(); rocketAnimation.start();
android:duration="@android:integer/config_mediumAnimTime"//动画持续时间
android:pivotX="50%p" android:pivotY="50%p" //动画相对于物件的x,y坐标开始位置 取值0%-100%. 50%
android:duration="@android:integer/config_mediumAnimTime" />三种表示格式:
1.-100% 到 100% 相对自身的百分比
2.-100%P到100%P 相对父组件的百分比
3.folat value 没有后缀 表示绝对值
例子:
android:toDegrees="-45"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400" />Frame Animation
android:drawable
android:duration