Android系统中的动画
在Android系统中,动画可分为三类,分别为帧动画(Frame Animation),补间动画(Tweened Animation),属性动画。本章主要讲述帧动画和补间动画。
帧动画
帧动画是一种常见的动画形式(Frame By Frame),其原理是在“连续的关键帧”中分解动画动作,也就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。其表现出来的样式类似于我们常见到的GIF图。而帧动画所呈现的结果也依赖于每一“帧”,大家先看效果图:
先是写一个xml文件
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/progress_loading_image_01" android:duration="50"></item>
<item android:drawable="@mipmap/progress_loading_image_02" android:duration="50"></item>
<item android:drawable="@mipmap/progress_loading_image_03" android:duration="50"></item>
<item android:drawable="@mipmap/progress_loading_image_04" android:duration="50"></item>
<item android:drawable="@mipmap/progress_loading_image_05" android:duration="50"></item>
<item android:drawable="@mipmap/progress_loading_image_06" android:duration="50"></item>
<item android:drawable="@mipmap/progress_loading_image_07" android:duration="50"></item>
<item android:drawable="@mipmap/progress_loading_image_08" android:duration="50"></item>
</animation-list>
时间以及图片
然后是代码
@ContentView(R.layout.activity_xml_frame)
public class FrameXMLActivity extends Activity{
@ViewInject(R.id.iv_frame)
private ImageView imageView;
private AnimationDrawable animationDrawable;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
x.view().inject(this);
animationDrawable = (AnimationDrawable) imageView.getBackground();
}
@Event(value = {R.id.bntStartFrame,R.id.bntStopFrame},type = View.OnClickListener.class)
private void click(View view){
switch (view.getId()){
case R.id.bntStartFrame:
startFrame();
break;
case R.id.bntStopFrame:
stopFrame();
break;
}
}
//关闭帧动画
private void stopFrame() {
if(animationDrawable.isRunning()){
animationDrawable.stop();
}
}
//开启帧动画
private void startFrame() {
if(!animationDrawable.isRunning()){
animationDrawable.start();
}
}
}
- 补间动画(Tween)
补间动画指的是做flash动画时,在两个关键帧中间需要做“补间动画”,才能实现图画的运动;插入补间动画后两个关键帧之间的插补帧是由计算机自动运算而得到的。也就是说在使用补间动画时,我们开发者指定了动画开始、结束的关键帧,中间的变化是计算机自动帮助我们补齐的。
补间动画有四种基本形式,分别是Alpha(透明度),Translate(位移),Scale(缩放),Rotate(旋转)。当然还可以是多种动画效果的组合,例如alpha+translate、alpha+rotate,甚至四种形式组合在一起的动画。同样,和帧动画一样,补间动画的可以以xml的方式实现,也可以以代码的方式实现
补间动画方法很多就只放一下方法吧,我自己也没练好呢,回头会再发详细的补间