Android动画(2)--TweenAnimation(补间动画)

原创 2016年08月28日 15:54:41

本节我们来讲补间动画

补间动画的实现方式,补间动画则是通过特定算法在两个关键帧之间补充渐变的动画效果来实现的。补间动画的优点是可以节省空间。
这里写图片描述

补间动画如下:

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="1000"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
    <!--
     透明度控制动画效果 alpha
        浮点型值:
            fromAlpha 属性为动画起始时透明度
            toAlpha   属性为动画结束时透明度
            说明:
                0.0表示完全透明
                1.0表示完全不透明
            以上值取0.0-1.0之间的float数据类型的数字

        长整型值:
            duration  属性为动画持续时间
            说明:
                时间以毫秒为单位
    -->
</set>
 <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+180"

        />
    <!--
     rotate 旋转动画效果
       属性:interpolator 指定一个动画的插入器
             在我试验过程中,使用android.res.anim中的资源时候发现
             有三种动画插入器:
                accelerate_decelerate_interpolator   加速-减速 动画插入器
                accelerate_interpolator               加速-动画插入器
                decelerate_interpolator               减速- 动画插入器
             其他的属于特定的动画效果

       浮点数型值:
            fromDegrees 属性为动画起始时物件的角度
            toDegrees   属性为动画结束时物件旋转的角度 可以大于360度


            说明:
                     当角度为负数——表示逆时针旋转
                     当角度为正数——表示顺时针旋转
                     (负数from——to正数:顺时针旋转)
                     (负数from——to负数:逆时针旋转)
                     (正数from——to正数:顺时针旋转)
                     (正数from——to负数:逆时针旋转)

            pivotX     属性为动画相对于物件的X坐标的开始位置
            pivotY     属性为动画相对于物件的Y坐标的开始位置

            说明:        以上两个属性值 从0%-100%中取值
                         50%为物件的X或Y方向坐标上的中点位置

        长整型值:
            duration  属性为动画持续时间
            说明:       时间以毫秒为单位

    -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:fillAfter="true">


    <scale
        android:duration="1000"
        android:fillAfter="false"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.4"
        android:toYScale="1.4" />

<!--
     尺寸伸缩动画效果 scale
       属性:interpolator 指定一个动画的插入器
        在我试验过程中,使用android.res.anim中的资源时候发现
        有三种动画插入器:
            accelerate_decelerate_interpolator  加速-减速 动画插入器
            accelerate_interpolator        加速-动画插入器
            decelerate_interpolator        减速- 动画插入器
        其他的属于特定的动画效果
   AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值

  BounceInterpolator   动画结束的时候弹起

  CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线

  DecelerateInterpolator 在动画开始的地方快然后慢

  LinearInterpolator   以常量速率改变

  OvershootInterpolator    向前甩一定值后再回到原来位置



      浮点型值:

            fromXScale 属性为动画起始时 X坐标上的伸缩尺寸
            toXScale   属性为动画结束时 X坐标上的伸缩尺寸

            fromYScale 属性为动画起始时Y坐标上的伸缩尺寸
            toYScale   属性为动画结束时Y坐标上的伸缩尺寸

            说明:
                 以上四种属性值

                    0.0表示收缩到没有
                    1.0表示正常无伸缩
                    值小于1.0表示收缩
                    值大于1.0表示放大

            pivotX     属性为动画相对于物件的X坐标的开始位置
            pivotY     属性为动画相对于物件的Y坐标的开始位置

            说明:
                    以上两个属性值 从0%-100%中取值
                    50%为物件的X或Y方向坐标上的中点位置

        长整型值:
            duration  属性为动画持续时间
            说明:   时间以毫秒为单位

        布尔型值:
            fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用

-->
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true">


    <translate
        android:duration="2000"
        android:fromXDelta="30"
        android:fromYDelta="30"
        android:toXDelta="-80"
        android:toYDelta="300" />
    <!--
     translate 位置转移动画效果
        整型值:
            fromXDelta 属性为动画起始时 X坐标上的位置
            toXDelta   属性为动画结束时 X坐标上的位置
            fromYDelta 属性为动画起始时 Y坐标上的位置
            toYDelta   属性为动画结束时 Y坐标上的位置
            注意:
                     没有指定fromXType toXType fromYType toYType 时候,
                     默认是以自己为相对参照物
        长整型值:
            duration  属性为动画持续时间
            说明:   时间以毫秒为单位
    -->
</set>

我想大家看了这些例子已经领会了很多了,下面我们讲讲AnimationSet

AnimationSet

这个是一种动画分组的,

android:shareInterpolator="true"   //是否共享Interpolator   android:interpolator="@android:anim/accelerate_decelerate_interpolator"    
//interpolator  加减速控制
    android:duration="3000"   //该组动画时间
    android:fillAfter="false" //是否停留在最后一帧动画
    //这里还有一个操作叫fillbefore  ,是否停留在开始一帧

set的例子如下

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="700">
        <scale
            android:fromXScale="1.4"
            android:toXScale="0.0"
            android:fromYScale="0.6"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
        <rotate
            android:fromDegrees="0"
            android:toDegrees="-45"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
    </set>
</set>
//此处为两个动画组。

以上五种类型分别的使用方法如下:

ImageView image = (ImageView) findViewById(R.id.imageview);
        Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
        image.startAnimation(hyperspaceJump);

对应的xml类型有android 的java代码的使用方法

 // TODO Auto-generated method stub
                // 1&2: 确定起始状态,结束状态
                TranslateAnimation tAnim = new TranslateAnimation(0, 400, 0, 0);//横向位移400个单位
                RotateAnimation rAnima = new RotateAnimation(0, 70);//顺时针旋转70度
                ScaleAnimation sAnima = new ScaleAnimation(0, 5, 0, 5);//横向放大5倍,纵向放大5倍
                AlphaAnimation aAnima = new AlphaAnimation(1.0f, 0.0f);//从全不透明变为全透明
                // 3: 确定持续时间
                tAnim.setDuration(2000);
                rAnima.setDuration(2000);
                sAnima.setDuration(2000);
                aAnima.setDuration(2000);

                // 4: 确定Interpolator
                tAnim.setInterpolator(new AccelerateDecelerateInterpolator());

                // 启动动画
                translation.startAnimation(tAnim);
                rotate.startAnimation(rAnima);
                scale.startAnimation(sAnima);
                alpha.startAnimation(aAnima);
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android四种补间动画介绍及实现

一.Android的animation由四种类型组成:alpha、scale、translate、rotate alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动...
  • romanstatic
  • romanstatic
  • 2016年09月10日 09:35
  • 1491

Android开发之Tween(补间动画)完全解析(上)——xml文件配置的实现

相信不管做了多长时间开发的人都用用过Tween动画,从刚开始工作到现在我也是用了N次Tween动画,但是每一次使用总感觉掌握的不够全面,所以花了点时间详细的总结了下Tween动画,其实在android...
  • dmk877
  • dmk877
  • 2016年07月22日 23:27
  • 5694

Android 补间动画原理

这段时间项目中用到了动画,所以趁热打铁,看看动画原理 补间动画 使用举例 TranslateAnimation translateAnim = new TranslateAnimation(0, 1...
  • Mr_LiaBill
  • Mr_LiaBill
  • 2015年10月30日 13:53
  • 2174

Android 动画系列之补间(Tween)动画详解

上一篇博客中写了逐帧动画(Frame)的使用,Android中除了支持逐帧动画(Frame)之外,也提供了对补间(Tween)动画的支持。补间动画就是指开发者只需要指定动画的开始、结束等“关键帧”,而...
  • Airsaid
  • Airsaid
  • 2016年06月05日 20:34
  • 9323

Android-补间动画基本使用(位移、缩放、旋转、透明)

补间动画 原形态变成新形态时为了过渡变形过程,生成的动画就叫补间动画 位移、旋转、缩放、透明 位移: 参数10指的是X的起点坐标,但不是指屏幕x坐标为10的位置,而是image...
  • u014657752
  • u014657752
  • 2015年08月29日 18:58
  • 2381

Android开发之Tween(补间动画)完全解析(下)——代码实现

在上一篇文章中,我们详细讨论了Tween动画的xml的实现以及interpolator的使用,相信通过上篇文章大家对Tween动画的xml属性的配置会有一个详细的理解,当然这篇文章也是承接上篇文章,这...
  • dmk877
  • dmk877
  • 2016年07月24日 20:30
  • 1918

Android中属性动画和补间动画的区别

目录目录 前言 为什么引入属性动画 属性动画 ObjectAnimator ValueAnimator AnimatorSet Animator监听器前言Android属性动画和补间动画,既是日常工作...
  • zinss26914
  • zinss26914
  • 2016年01月26日 17:52
  • 9325

Android Animation动画详解(一): 补间动画

Android的Tween动画由四种类型组成:alpha、scale、translate、rotate。
  • zuiwuyuan
  • zuiwuyuan
  • 2015年08月23日 18:50
  • 2550

属性动画、帧动画、补间动画的介绍使用及对比

属性动画、帧动画、补间动画的介绍使用及对比版权声明:转载必须注明本文转自南轩的博客: http://blog.csdn.net/nanxuan521 在android开发中经常会碰到一些动画...
  • nanxuan521
  • nanxuan521
  • 2016年09月22日 10:48
  • 3018

Android入门——补间动画和帧动画应用小结

动画Animations在App中的作用有多重要勿需多言,弹出式的PopupWindow、Tab切换、Loding等等。Android 3.0前,Android只支持两种动画模式:补间动画**Twee...
  • CrazyMo_
  • CrazyMo_
  • 2016年04月07日 13:45
  • 3413
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android动画(2)--TweenAnimation(补间动画)
举报原因:
原因补充:

(最多只允许输入30个字)