Android 动画

来源:互联网 发布:数据免费恢复软件 编辑:程序博客网 时间:2024/06/03 17:55
动画
Tween动画:
通过对 View 的内容进行一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。动画效果的定义可以采用XML来做也可以采用编码来做。Tween动画有4种类型:
动画的类型Xml定义动画使用的配置节点 编码定义动画使用的类
渐变透明度动画效果<alpha/>  AlphaAnimation
渐变尺寸缩放动画效果<scale/>  ScaleAnimation
画面位置移动动画效果<translate/>  TranslateAnimation
画面旋转动画效果<rotate/> RotateAnimation
通过代码的形式来实现动画:
   public class DemoActivity extends Activity {
 AnimationDrawable animationDrawable;
ImageView iv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        iv =  (ImageView) this.findViewById(R.id.iv);//找到ImageView就是要实行动画的图片控件
        //动画的综合.可以把多种动画综合起来显示.单个动画不需要这个.
        AnimationSet set = new AnimationSet(false);
        //渐变透明动画
        AlphaAnimation aa = new AlphaAnimation(0.0f, 1.0f);
        aa.setDuration(5000);//动画的显示时间
        //尺寸缩放的动画.可以从一个点扩大到一个图片的效果
        ScaleAnimation sa = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f);
        sa.setDuration(5000);
        //位置移动的动画.可以水平和垂直方向同时移动
        TranslateAnimation ta = new TranslateAnimation(10.0f, 60.0f, 10.0f, 60.0f);
        ta.setDuration(5000);
        //旋转动画.可以围绕一个点开始旋转.
        RotateAnimation ra = new RotateAnimation(0, 90);
        ra.setDuration(5000);
        //通过set来添加动画.添加n个动画就是n个动画同时运行.注意要把上面的单独的动画注释掉.
        set.addAnimation(ra);
        set.addAnimation(ta);
        set.addAnimation(sa);
        set.addAnimation(aa);
        //通过加载布局文件来实现动画效果.
        Animation anim = AnimationUtils.loadAnimation(this, R.anim.alphaanim);
        Animation anim = AnimationUtils.loadAnimation(this, R.anim.scaleanim);
        Animation anim = AnimationUtils.loadAnimation(this, R.anim.translateanim);
        Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotateanim);
        Animation anim = AnimationUtils.loadAnimation(this, R.anim.set);
        //把一个Tween动画应用到某个控件上 
        iv.setAnimation(anim);
        //下面这段代码是把一个Frame动画布置到控件上并开始播放
          iv.setBackgroundResource(R.drawable.hit);
          animationDrawable =  (AnimationDrawable) iv.getBackground();
          animationDrawable.start();
    }
    //由于Frame动画是需要点击一下才能播放的.下面这段代码就是给Frame动画设置一个点击事件
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()== MotionEvent.ACTION_DOWN){
animationDrawable.start();
}
return super.onTouchEvent(event);
}

}
通过布局文件的形式来实现动画:
   在res下新建一个anim的文件夹.
   在这个文件夹下新建动画文件.先选择Tween动画.再选择具体的动画效果.名字可以随便起.
   渐变动画
   <?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="5000"
        >
  </alpha>
  缩放动画
  <?xml version="1.0" encoding="utf-8"?>
<scale  xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromXScale="0.0"
        android:toXScale="2.0"
        android:fromYScale="0.0"
        android:toYScale="2.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="5000"
        >
</scale>
  位移动画
  <?xml version="1.0" encoding="utf-8"?>
<translate  xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXDelta="0.0"
        android:toXDelta="100%p"
        android:fromYDelta="0.0"
        android:toYDelta="100%p"
        android:duration="5000"
        >
</translate>
  旋转动画
  <?xml version="1.0" encoding="utf-8"?>
<rotate  xmlns:android="http://schemas.android.com/apk/res/android"
 android:fromDegrees="0.0"
        android:toDegrees="180.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="5000"
        >
</rotate>
  动画的综合设置
  <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >
<rotate 
 android:fromDegrees="0.0"
        android:toDegrees="180.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="5000"
        >
</rotate>
<scale  
   android:fromXScale="0.0"
        android:toXScale="2.0"
        android:fromYScale="0.0"
        android:toYScale="2.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="5000"
        >
</scale>
</set>
  在配置文件中设置好的动画可以直接在主Activity中引用:
     Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotateanim);
     Animation anim = AnimationUtils.loadAnimation(this, R.anim.set);

Frame动画:
   即顺序播放事先做好的图像,跟放胶片电影类似。开发步骤:
   把准备好的图片放进项目res/ drawable下。
   在drawable下新建一个xml文件.类型选择就是drawable.
   <?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/girl_1" android:duration="200" />
    <item android:drawable="@drawable/girl_2" android:duration="200" />
    <item android:drawable="@drawable/girl_3" android:duration="200" />
    <item android:drawable="@drawable/girl_4" android:duration="200" />
    <item android:drawable="@drawable/girl_5" android:duration="200" />
    <item android:drawable="@drawable/girl_6" android:duration="200" />
    <item android:drawable="@drawable/girl_7" android:duration="1000" />
    <item android:drawable="@drawable/girl_8" android:duration="200" />
    <item android:drawable="@drawable/girl_9" android:duration="200" />
    <item android:drawable="@drawable/girl_10" android:duration="200" />
    <item android:drawable="@drawable/girl_11" android:duration="200" />
</animation-list>
   设置好布局文件后在主Activity中把设置好的布局文件显示到控件上
             //下面这段代码是把一个Frame动画布置到控件上并开始播放
          iv.setBackgroundResource(R.drawable.hit);
          animationDrawable =  (AnimationDrawable) iv.getBackground();
          animationDrawable.start();
         }
         //由于Frame动画是需要点击一下才能播放的.下面这段代码就是给Frame动画设置一个点击事件
      @Override
     public boolean onTouchEvent(MotionEvent event) {
   if(event.getAction()== MotionEvent.ACTION_DOWN){
animationDrawable.start();
 }
 return super.onTouchEvent(event);
    }

原创粉丝点击