android 动画 Frame Animation
3.0以前,Android支持两种动画,Tween Animation,Frame Animation,
在android3.0中又引入了一个新的动画系统:Property Animation,
这三种动画模式在SDK中被称为Property Animation,View Animation,Drawable Animation
还有一些activity之间的过渡动画,android5.0增加的矢量动画,过渡动画。
Frame Animation
为帧动画,在android又称drawable animation,通过一系列的drawable来显示模拟动画的效果
android中提供了AnimationDrawable类来实现帧动画,可以用drawable当做view的背景,
这些配置利用XML更方便和节省内存。
步骤:
首先在res/drawable/目录下创建一个xml文件
文件以
上面的代码中,onshot若为true,则动画只执行一次,否则动画会循环播放。
item中的duration用于设置当前帧的停留时间。
在代码里获取并启动动画。
如果上面xml的名字为thrust_test.xml. 则在代码里使用如下:
AnimationDrawable testAnimation;
public void onCreaet(Boudle savedInstanceState) {
super.onCreate(savedInstanceState);
setContextView(R.layout.main);
ImageView image = (ImageView) findViewById(R.id.image);
image.setBackgroundResource(R.drawable.thrust_test);
testAnimation = (AnimationDrawable) image.getBackground();
}
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
testAnimation.start();
return true;
}
return super.onTouchEvent(event);
}
上面的代码是从资源里面获取到需要的动画,然后设置为view的背景,之后启动动画。
注意:动画的启动需要在view和window建立连接后才可以回执,上面的是在用户
触摸后(MotionEvent.ACTION_DOWN)后启动,如果需要打开界面就可以执行动画
则可以再activity的onWindowFocusChanged()启动。
也可以再代码里面加入动画:
testAnimation = new AnimationDrawable();
testAnimation.addFrame(getResources().getDrawable(R.drawable.rocket_thrust1, 200);
testAnimation.addFrame(getResources().getDrawable(R.drawable.rocket_thrust2, 200);
testAnimation.addFrame(getResources().getDrawable(R.drawable.rocket_thrust3, 200);
image.setBackground(testAnimation);
这里只是简单的举例一下,具体的还有待去看更多的资料。