Adnroid 三种动画的实现

在android中,一般有四种动画效果:

1.透明度

2.旋转

3.平移

4.缩放

动画模式:

1.帧动画 Frame by frame

2.渐变动画 Tweened Animation

3.属性动画 Properties Animation

首先来说下帧动画。帧动画,顾名思义,就是一帧一帧的放图片。可以创建一个XML文件,然后在animation-list标签下,一张一张的插入图片,设置属性,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/g1" android:duration="100"/>
    <item android:drawable="@mipmap/g2" android:duration="100"/>
    <item android:drawable="@mipmap/g3" android:duration="100"/>
    <item android:drawable="@mipmap/g4" android:duration="100"/>
    <item android:drawable="@mipmap/g5" android:duration="100"/>
    <item android:drawable="@mipmap/g6" android:duration="100"/>
    <item android:drawable="@mipmap/g7" android:duration="100"/>
    <item android:drawable="@mipmap/g8" android:duration="100"/>
    <item android:drawable="@mipmap/g9" android:duration="100"/>
    <item android:drawable="@mipmap/g10" android:duration="100"/>
    <item android:drawable="@mipmap/g11" android:duration="100"/>

</animation-list>
然后在Activity文件中:

 img = (ImageView) findViewById(R.id.imageView);
        AnimationDrawable ad = (AnimationDrawable) img.getDrawable();
        ad.start();

渐变动画,可以在xml文件里定义效果:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+350" />
</set>

上面的代码是一个旋转的动画,各个参数中:

duration:动画的持续时间

fromDegrees 从哪个角度开始旋转

toDegrees 旋转结束时的角度

pivotX 旋转点x轴坐标,可以是int,float或百分比类型

pivotY 旋转点y轴坐标,同上

Activity代码:

Animation animation = AnimationUtils.loadAnimation(MainActivity.this,R.anim.rotate);  
ivGirl.startAnimation(animation);  
详细的例子请看:http://blog.csdn.net/dmk877/article/details/51912104

也可以在Activity中直接写代码,比如说透明度动画:

AlphaAnimation aa = new AlphaAnimation(1.0f,0.5f);
        aa.setDuration(2000);//ms:毫秒  该动画的变化过程将会在2s中内完成
        aa.setFillAfter(true);//动画效果结束后 保持当前效果
        /**重复的个数*/
        aa.setRepeatCount(1);
        /**
         * 重复的模式
         * Animation.RESTART:重新开始
         * Animation.REVERSE:反向*/
        aa.setRepeatMode(Animation.REVERSE);
        /**开始动画*/
        img.startAnimation(aa);

旋转动画就是RotateAnimation;平移动画:TranslateAnimation;缩放动画:ScaleAnimation

具体参数和xml文件里介绍的差不多。

此外,可以用动画集合装载这些动画并实现 AnimationSet as = new AnimationSet(true); 用add方法as.add(动画变量名);img.startAnimation(as);

属性动画(properties Animation)

属性动画实现的效果和渐变动画差不多,但是有一点根本性的差别:渐变动画不会真正改变控件的位置,而属性动画会真正的改变控件的位置。

属性动画对象ObjectAnimator,该对象的构造参数:第一个为目标控件,第二个为要执行的动画的名称,第三个为数值(可以任意填多少个)。

ObjectAnimator animator = ObjectAnimator.ofFloat(tv,"alpha",1,0,1);  
animator.setDuration(2000);  
animator.start();  
上面代码就是执行一个tv控件由不透明变成透明再变成不透明的动画效果。setDuration(2000)表示该动画一共执行2s完成

同样,属性动画也可以装进动画集合,一起或分步执行:

ObjectAnimator oa = ObjectAnimator.ofFloat(btn_toMain,"rotation",180.0f,360.0f);
        ObjectAnimator oa1 = ObjectAnimator.ofFloat(btn_toMain,"alpha",0.0f,1.0f);
        AnimatorSet as = new AnimatorSet();
        as.setDuration(1000);
        as.playTogether(oa,oa1);
        as.start();
表示一起执行。

as.play(oa).after(oa1)

表示oa在oa1后执行。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值