帧动画FrameAnimation
- 多张图片快速切换,形成动画效果
- 帧动画使用xml定义
- frame动画是放置到res/drawable/下面,在这里定义要显示的图片和每张图片的显示时长
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/g1" android:duration="200" />
<item android:drawable="@drawable/g2" android:duration="200" />
<item android:drawable="@drawable/g3" android:duration="200" />
</animation-list>
- 在屏幕上播放帧动画
ImageView iv = (ImageView) findViewById(R.id.iv);
//把动画文件设置为imageView的背景
iv.setBackgroundResource(R.drawable.animations);
AnimationDrawable ad = (AnimationDrawable) iv.getBackground();
//播放动画
ad.start();
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView iv = (ImageView) findViewById(R.id.iv);
//把帧动画的资源文件指定为iv的背景
iv.setBackgroundResource(R.drawable.frameanimation);
//获取iv的背景
AnimationDrawable ad = (AnimationDrawable) iv.getBackground();
ad.start();
}
}
补间动画
- tween动画是放置到res/anim/下面
- 组件由原始状态向终极状态转变时,为了让过渡更自然,而自动生成的动画
1、透明动画AlphaAnimation
- AlphaAnimation aa = new AlphaAnimation(0, 0.5f);
- 0表示动画的起始透明度
- 0.5f表示动画的结束透明度
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.0" 开始透明度的值,完全不透明
android:toAlpha="1.0" 结束透明度的值,完全透明
android:duration="2000"
android:repeatCount="0" 动画效果重复几次
android:repeatMode="restart" 动画效果重复的模式 参数有重新开始和倒着执行的模式
android:interpolator="@android:anim/decelerate_interpolator"减速加速器
>
</alpha>
2、位移动画TranslateAnimation
TranslateAnimation ta = new TranslateAnimation(10, 100, 20, 200);
10:表示的x坐标起始位置
- iv的真实x + 10
100:表示x坐标的结束位置
- iv的真实x + 100
20:表示y坐标的起始位置
- iv的真实y + 20
200:表示y坐标的结束位置
- iv的真实y + 200
TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 1, Animation.RELATIVE_TO_SELF, 3, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 2);
Animation.RELATIVE_TO_SELF, 1:x坐标的初始位置
- iv的真实x + 1 * iv宽
Animation.RELATIVE_TO_SELF, 0.5f:y坐标的起始位置
- iv的真实y + 0.5 * iv高
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromXDelta="0" 开始像素
android:toXDelta="100" 水平平移结束像素
android:fromYDelta="0"
android:toYDelta="100"
android:startOffset="1000" 动画开始时间 1秒之后开始播放动画
>
</translate>
- 动画播放相关的设置
//设置动画持续时间
ta.setDuration(2000);
//动画重复播放的次数
ta.setRepeatCount(1);
//动画重复播放的模式
ta.setRepeatMode(Animation.REVERSE);
//动画播放完毕后,组件停留在动画结束的位置上
ta.setFillAfter(true);
//播放动画
iv.startAnimation(ta);
3、缩放动画ScaleAnimation
ScaleAnimation sa = new ScaleAnimation(0.5f, 2,