• Android动画


    动画分为两类:

    补间动画(Tween)和帧动画(Frame),补间动画是又一帧经过透明度、旋转、位移等变化而来。而帧动画则是由一帧帧连接起来的。

    补间动画主要有一下几种类:

    AlphaAnimation 、RotateAnimation 、ScaleAnimation 、TranslateAnimation 

    AnimationSet 是前面几种补间动画的组合

    补间动画的应用:

    1定义:两种方式,一种是在XML文件里面定义,另一种是直接用代码创建

    ① 用XML文件定义

    <?xml version="1.0" encoding="utf-8"?>

    <translate xmlns:android="http://schemas.android.com/apk/res/android"

        android:duration="1000"

        android:fillAfter="true"

        android:fillEnabled="true"

        android:fromXDelta="0"

        android:fromYDelta="0"

        android:interpolator="@android:anim/linear_interpolator"

        android:repeatCount="2"

        android:repeatMode="reverse"

        android:toXDelta="100"

    android:toYDelta="200" />

     

    引用定义好的补间动画:

    TranslateAnimation ta = (TranslateAnimation) (AnimationUtils

    .loadAnimation(Activity1.this,

    R.anim.anim1_1));

    //iv是一个ImageView对象

    iv.setAnimation(ta);

    ta.start();

    ② 直接用代码创建:

    // 起始x坐标,结束x坐标,起始y坐标,结束y坐标

    TranslateAnimation ta = new TranslateAnimation(0f,

    -100f, 0f, 200f);

    ta.setDuration(2000);// 设置动画持续时间

    ta.setRepeatMode(Animation.REVERSE);// 设置动画的重播模式

    ta.setRepeatCount(2);// 设置动画的重播次数

    ta.setFillEnabled(true);// 设置动画的填充模式,动画播放结束后停留的位置

    ta.setFillAfter(true);// 设置动画播放结束后停留在结束位置

    ta.setInterpolator(Activity_main.allInterpolator[0]);// 设置动画的播放速度

    iv.setAnimation(ta);

    ta.start();

    动画播放速度效果主要有一下类型:

    Interpolator[] allInterpolator = new Interpolator[] {

    new AccelerateInterpolator(), // 0越来越快

    new DecelerateInterpolator(),// 1越来越慢

    new AccelerateDecelerateInterpolator(),// 2先快后慢

    new AnticipateInterpolator(),// 3先后退一小步然后向前加速

    new OvershootInterpolator(),// 4快速到达终点超出一小步然后回到终点

    new BounceInterpolator(),// 5到达终点产生弹球效果,弹几下再回来

    new LinearInterpolator() // 6均匀速度

    };

    其它几种类型的补间动画和上述一种差不多,介绍一下AnimationSet这类混合的补间动画

    ①XML文件定义:

    <?xml version="1.0" encoding="utf-8"?>

    <set xmlns:android="http://schemas.android.com/apk/res/android"

        android:interpolator="@android:anim/accelerate_interpolator"

        android:shareInterpolator="true" >

     

        <scale

            android:duration="2000"

            android:fromXScale="0"

            android:fromYScale="0"

            android:pivotX="50%"

            android:pivotY="50%"

            android:toXScale="1.0"

            android:toYScale="1.0" />

     

        <alpha

            android:duration="2000"

            android:fromAlpha="0"

            android:toAlpha="1.0" />

     

        <rotate

            android:duration="2000"

            android:fromDegrees="0"

            android:pivotX="50%"

            android:pivotY="50%"

            android:toDegrees="360" />

     

    </set>

    ② 代码生成:

    RotateAnimation ta = new RotateAnimation(0f, 2160f,

    50f, 50f);

    ta.setDuration(2000);

    ScaleAnimation sa = new ScaleAnimation(0f, 4f, 0f,

    4f, 50f, 50f);

    sa.setDuration(2000);

    AlphaAnimation aa = new AlphaAnimation(0f, 1f);

    aa.setDuration(2000);

    // AnimationSet 里面的 动画是否统一使用

    // AnimationSet的Interpolator

    AnimationSet as = new AnimationSet(true);

    as.setInterpolator(Activity_main.allInterpolator[5]);

    as.setFillEnabled(true);

    as.setFillAfter(true);

    as.setDuration(2000);

    as.addAnimation(ta);

    as.addAnimation(sa);

    as.addAnimation(aa);

    iv.setAnimation(as);

    as.start();

    帧动画:

    XML定义

    <?xml version="1.0" encoding="utf-8"?>

    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"

        android:oneshot="true" >

     

        <item

            android:drawable="@drawable/a1"

            android:duration="80"/>

       

        <item

            android:drawable="@drawable/a3"

            android:duration="80"/>

        <item

            android:drawable="@drawable/a4"

            android:duration="80"/>

        <item

            android:drawable="@drawable/a5"

            android:duration="80"/>

        

    </animation-list>

    帧动画的播放:

    AnimationDrawable ad;

     

    // 从xml获得一个帧动画

    ad = (AnimationDrawable) getResources().getDrawable(

    R.drawable.drawable_anim);

    // 设置是否不重复播放

    ad.setOneShot(true);

    // 设置控件的背景drawable

    iv.setBackgroundDrawable(ad);

    // 启动动画

    ad.start();

    设置Activity启动时候的动画

    startActivity(new Intent(Activity_main.this, Activity1.class));

    //这一句话一定要紧随其后

    overridePendingTransition(R.anim.anim1_0, R.anim.anim1_0);

  • 相关阅读:
    hdu acm 2844 Coins 解题报告
    hdu 1963 Investment 解题报告
    codeforces 454B. Little Pony and Sort by Shift 解题报告
    广大暑假训练1 E题 Paid Roads(poj 3411) 解题报告
    hdu acm 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
    hdu acm 1114 Piggy-Bank 解题报告
    poj 2531 Network Saboteur 解题报告
    数据库范式
    ngnix 配置CI框架 与 CI的简单使用
    Vundle的安装
  • 原文地址:https://www.cnblogs.com/jasonxcj/p/4865152.html
Copyright © 2020-2023  润新知