Animation使用入门

分类
1.Tweened Animations:该类Animations提供了旋转、移动、伸展和淡出等效果。Alpha——淡入淡出,Scale——缩放效果,Rotate——旋转,Translate——移动效果。
2.Frame-by-frame Animations:帧动画 这一类Animations可以创建一个Drawable序列,这些Drawable可以按照指定的时间间歇一个一个的显示。


java代码中使用
淡入淡出动画
 //创建一个AnimationSet对象,参数为Boolean型,
           //true表示使用Animation的interpolator,false则是使用自己的
           AnimationSet animationSet = new AnimationSet(true);
           //创建一个AlphaAnimation对象,参数从完全的透明度,到完全的不透明
           AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
           //设置动画执行的时间
           alphaAnimation.setDuration(500);
           //将alphaAnimation对象添加到AnimationSet当中
           animationSet.addAnimation(alphaAnimation);
           //使用ImageView的startAnimation方法执行动画
           image.startAnimation(animationSet);


旋转动画
           AnimationSet animationSet = new AnimationSet(true);
           //参数1:从哪个旋转角度开始
           //参数2:转到什么角度
           //后4个参数用于设置围绕着旋转的圆的圆心在哪里
           //参数3:确定x轴坐标的类型,有ABSOLUT绝对坐标、RELATIVE_TO_SELF相对于自身坐标、     RELATIVE_TO_PARENT相对于父控件的坐标
           //参数4:x轴的值,0.5f表明是以自身这个控件的一半长度为x轴
           //参数5:确定y轴坐标的类型
           //参数6:y轴的值,0.5f表明是以自身这个控件的一半长度为x轴
           RotateAnimation rotateAnimation = new RotateAnimation(0, 360,
                  Animation.RELATIVE_TO_SELF,0.5f,
                  Animation.RELATIVE_TO_SELF,0.5f);
           rotateAnimation.setDuration(1000);
           animationSet.addAnimation(rotateAnimation);
           image.startAnimation(animationSet);


放大缩小动画
           AnimationSet animationSet = new AnimationSet(true);
           //参数1:x轴的初始值
           //参数2:x轴收缩后的值
           //参数3:y轴的初始值
           //参数4:y轴收缩后的值
           //参数5:确定x轴坐标的类型
           //参数6:x轴的值,0.5f表明是以自身这个控件的一半长度为x轴
           //参数7:确定y轴坐标的类型
           //参数8:y轴的值,0.5f表明是以自身这个控件的一半长度为x轴
           ScaleAnimation scaleAnimation = new ScaleAnimation(
                  0, 0.1f,0,0.1f,
                  Animation.RELATIVE_TO_SELF,0.5f,
                  Animation.RELATIVE_TO_SELF,0.5f);
           scaleAnimation.setDuration(1000);
           animationSet.addAnimation(scaleAnimation);
           image.startAnimation(animationSet);


移动动画
AnimationSet animationSet = new AnimationSet(true);
           //参数1~2:x轴的开始位置
           //参数3~4:y轴的开始位置
           //参数5~6:x轴的结束位置
           //参数7~8:x轴的结束位置
           TranslateAnimation translateAnimation =
              new TranslateAnimation(
                  Animation.RELATIVE_TO_SELF,0f,
                  Animation.RELATIVE_TO_SELF,0.5f,
                  Animation.RELATIVE_TO_SELF,0f,
                  Animation.RELATIVE_TO_SELF,0.5f);
           translateAnimation.setDuration(1000);
           animationSet.addAnimation(translateAnimation);
           image.startAnimation(animationSet);

Tween Animations的通用方法
  1、setDuration(long durationMills)
  设置动画持续时间(单位:毫秒)
  2、setFillAfter(Boolean fillAfter)
  如果fillAfter的值为true,则动画执行后,控件将停留在执行结束的状态
  3、setFillBefore(Boolean fillBefore)
  如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态
  4、setStartOffSet(long startOffSet)
  设置动画执行之前的等待时间
  5、setRepeatCount(int repeatCount)
  设置动画重复执行的次数


在xml中使用
1、  alpha.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator">
    <!-- fromAlpha和toAlpha是起始透明度和结束时透明度 -->
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:startOffset="500"
        android:duration="500"/>
</set>


2、  rotate.xml
 
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator">
    <!--
        fromDegrees:开始的角度
        toDegrees:结束的角度,+表示是正的
        pivotX:用于设置旋转时的x轴坐标
        例
           1)当值为"50",表示使用绝对位置定位
           2)当值为"50%",表示使用相对于控件本身定位
           3)当值为"50%p",表示使用相对于控件的父控件定位
        pivotY:用于设置旋转时的y轴坐标
      -->
    <rotate
        android:fromDegrees="0"
        android:toDegrees="+360"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="1000"/>
</set>


3、  scale.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator">
   <!--
       起始x轴坐标
           止x轴坐标
           始y轴坐标
           止y轴坐标
           轴的坐标
           轴的坐标
     -->
   <scale
       android:fromXScale="1.0"
       android:toXScale="0.0"
       android:fromYScale="1.0"
       android:toYScale="0.0"
       android:pivotX="50%"
       android:pivotY="50%"
       android:duration="1000"/>
</set>
 

4、  translate.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator">
    <!--
           始x轴坐标
           止x轴坐标
           始y轴坐标
           止y轴坐标
      -->
    <translate
        android:fromXDelta="0%"
        android:toXDelta="100%"
        android:fromYDelta="0%"
        android:toYDelta="100%"
        android:duration="2000"/>
</set>
           // 使用AnimationUtils装载动画配置文件
           Animation animation = AnimationUtils.loadAnimation(
                  Animation1Activity.this, R.anim.alpha);
           // 启动动画
           image.startAnimation(animation);
帧动画调用
<?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/a_01" android:duration="50"/>
    <item android:drawable="@drawable/a_02" android:duration="50"/>
    <item android:drawable="@drawable/a_03" android:duration="50"/>
    <item android:drawable="@drawable/a_04" android:duration="50"/>
    <item android:drawable="@drawable/a_05" android:duration="50"/>
    <item android:drawable="@drawable/a_06" android:duration="50"/>
</animation-list>
imageView.setBackgroundResource(R.anim.anim);
           AnimationDrawable animationDrawable = (AnimationDrawable)
              imageView.getBackground();
           animationDrawable.start();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值