android补间动画(TweenAnimation)

一、AlphaAnimation(渐变动画)

1.1 代码形式实现

//渐变动画
private void startAlphaAnimation () {
    /**
     * 创建渐变动画对象
     * 参数1:从一个透明值
     * 参数2:到另外一个透明值
     * 参数取值范围0~1
     * 0:全不透明
     * 1:全透明
     */
    AlphaAnimation aa = new AlphaAnimation (1,0);
    //设置动画播放时长
    aa.setDuration (1000);
    //设置保持动画结束后的动作
    aa.setFillAfter (true);
    //设置保持动画结束前的动作
    //aa.setFillBefore (true);
    //设置延时之后再启动动画
    aa.setStartOffset (500);
    //设置重复播放动画的次数,如果为负数的话,则一直重复播放
    aa.setRepeatCount (3);
    /**
     * 设置重复播放的模式,参数有2个Animation.REVERSE、Animation.RESTART
     * Animation.REVERSE,紧接着播放动画
     * Animation.RESTART,回到开始的状态再播放动画
     */
    aa.setRepeatMode (Animation.RESTART);
    //播放动画
    iv_anim.startAnimation (aa);
    //监听动画的状态,其它动画的监听也是一样的
    aa.setAnimationListener (new Animation.AnimationListener () {
        //开始动画时回调
        @Override
        public void onAnimationStart (Animation animation) {
            toast("开始动画时回调");
        }
        //动画结束后回调
        @Override
        public void onAnimationEnd (Animation animation) {
            toast("动画结束后回调");
        }
        //重复播放动画时回调
        @Override
        public void onAnimationRepeat (Animation animation) {
            toast("重复播放动画时回调");
        }
    });
}

1.2 使用xml方式

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1"
    android:toAlpha="0">

</alpha>

二、ScaleAnimation(缩放动画)

2.1 代码形式实现

//缩放动画
private void startScaleAnimation () {
    /**
     * 创建缩放动画对象
     * 参数1:X轴从多大开始缩放
     * 参数2:X轴缩放到多大
     * 参数3:Y轴从多大开始缩放
     * 参数4:Y轴缩放到多大
     * 0是从没有开始缩放
     * 其他大于零的数是缩放的倍数
     * 小于零的数是将缩放的控件翻转再进行缩放
     *
     * 参数5:X轴围绕哪里(可以是自己,也可以是父控件)缩放Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_PARENT
     * 参数6:围绕X轴的哪个点进行缩放
     * 参数7:Y轴围绕哪里缩放
     * 参数8:围绕Y轴的那个点进行缩放
     */
    ScaleAnimation sa = new ScaleAnimation (1,0,1,0,Animation.RELATIVE_TO_SELF,2.0f,Animation.RELATIVE_TO_SELF,2.0f);
    //以下设置的参数同渐变动画设置的参数一致
    sa.setDuration (1000);
    sa.setRepeatCount (3);
    sa.setRepeatMode (Animation.REVERSE);
    sa.setFillAfter (true);
    sa.setStartOffset (500);
    iv_anim.startAnimation (sa);

}

2.2 使用xml方式

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1"
    android:fromYScale="1"
    android:toXScale="2"
    android:toYScale="2"
    android:pivotX="50%"
    android:pivotY="50%">

</scale>

三、RotateAnimation(旋转动画)

3.1 代码的形式实现

//旋转动画
private void startRotateAnimation () {
    /**
     * 创建旋转动画对象
     * 参数1:从哪个角度开始旋转
     * 参数2:旋转到哪个角度
     * 参数3:X轴围绕哪里(可以是自己,也可以是父控件)旋转Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_PARENT
     * 参数4:X轴围绕着哪个点进行旋转
     * 参数5:Y轴围绕哪里旋转
     * 参数6:Y轴围绕着哪个点进行旋转
     */
    RotateAnimation ra = new RotateAnimation (0,720,Animation.RELATIVE_TO_PARENT,1.0f,Animation.RELATIVE_TO_SELF,1.0f);
    //以下设置的参数同渐变动画设置的参数一致
    ra.setDuration (1000);
    ra.setStartOffset (500);
    ra.setFillAfter (true);
    ra.setRepeatCount (4);
    ra.setRepeatMode (Animation.REVERSE);
    iv_anim.startAnimation (ra);
}

3.2 使用xml方式实现

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="360"
    android:pivotY="100%p"
    android:pivotX="100%p">

</rotate>

四、TranslateAnimation(平移动画)

4.1 代码的形式实现

//平移动画
private void startTranslateAnimation () {
    /**
     *  创建平移动画的对象
     *  参数1:X轴平移起始位置相对于哪里(可以相对自己,起始位置相对于自己或者父控件,其实是一样的,可以相对父控件,如果是父控件,有可能跑到屏幕外面)
     *  参数2;X轴平移动画的起始位置
     *  参数3:X轴平移动到的位置相对哪里(可以相对自己,起始位置相对于自己或者父控件,其实是一样的,可以相对父控件,如果是父控件,有可能跑到屏幕外面)
     *  参数4:X轴平移到的位置
     *  参数5:Y轴平移起始位置相对于哪里(可以相对自己,起始位置相对于自己或者父控件,其实是一样的,可以相对父控件,如果是父控件,有可能跑到屏幕外面)
     *  参数6;Y轴平移动画的起始位置
     *  参数7:Y轴平移动到的位置相对哪里(可以相对自己,起始位置相对于自己或者父控件,其实是一样的,可以相对父控件,如果是父控件,有可能跑到屏幕外面)
     *  参数8:Y轴平移到的位置
     *
     *  总结:平移相对位置只和平移到的相对位置有关。
     */
    TranslateAnimation ta = new TranslateAnimation (Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_SELF,1F,Animation.RELATIVE_TO_PARENT,0f,Animation.RELATIVE_TO_SELF,1f);
    //以下设置的参数同渐变动画设置的参数一致
    ta.setRepeatMode (Animation.REVERSE);
    ta.setRepeatCount (4);
    ta.setDuration (1000);
    ta.setStartOffset (500);
    ta.setFillAfter (true);
    iv_anim.startAnimation (ta);


}

4.2 使用xml方式实现

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:fromYDelta="0"
    android:toXDelta="200"
    android:toYDelta="200">

</translate>

五、AnimationSet(组合动画)

5.1 代码的形式实现

//组合动画
private void startSetAnimation () {
    /**
     * 创建组合动画对象
     * 参数的具体意义不是很清楚,待以后清楚了补充
     */
    AnimationSet as = new AnimationSet (true);

    TranslateAnimation ta = new TranslateAnimation (Animation.RELATIVE_TO_SELF,0,Animation.RELATIVE_TO_SELF,1F,Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,1f);
    ta.setRepeatMode (Animation.REVERSE);
    ta.setRepeatCount (4);
    ta.setDuration (1000);
    ta.setStartOffset (500);
    ta.setFillAfter (true);

    RotateAnimation ra = new RotateAnimation (0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
    ra.setDuration (1000);
    ra.setStartOffset (500);
    ra.setFillAfter (true);
    ra.setRepeatCount (4);
    ra.setRepeatMode (Animation.REVERSE);

    ScaleAnimation sa = new ScaleAnimation (0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
    sa.setDuration (1000);
    sa.setRepeatCount (4);
    sa.setRepeatMode (Animation.REVERSE);
    sa.setFillAfter (true);
    sa.setStartOffset (500);

    AlphaAnimation aa = new AlphaAnimation (0,1);
    aa.setDuration (1000);
    aa.setFillAfter (true);
    aa.setStartOffset (500);
    aa.setRepeatCount (4);
    aa.setRepeatMode (Animation.REVERSE);

    //往组合动画中添加其它动画对象
    as.addAnimation (ta);
    as.addAnimation (sa);
    as.addAnimation (aa);
    as.addAnimation (ra);
    //启动动画
    iv_anim.startAnimation (as);
}

5.2 使用xml方式实现

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

    <alpha android:fromAlpha="1"
        android:toAlpha="0"/>

    <rotate android:fromDegrees="0"
        android:toDegrees="180"
        android:pivotX="50%"
        android:pivotY="50%"/>

    <scale android:pivotY="50%"
        android:pivotX="50%"
        android:fromXScale="1"
        android:fromYScale="1"
        android:toYScale="2"
        android:toXScale="2"/>

    <translate android:fromYDelta="0"
        android:fromXDelta="0"
        android:toYDelta="200"
        android:toXDelta="200"/>
</set>

六、xml方式需要在代码中加载

//加载xml动画
 
AnimationSet animation = (AnimationSet) AnimationUtils.loadAnimation(this, R.anim.myset);

Demo下载地址:点击打开链接

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值