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动画1-补间动画(TweenAnimation)

Android的动画形式共有三种:TweenAnimation(补间动画)、FrameAnimation(帧动画)、PropertyAnimation(属性动画)。 本章介绍补间动画。 先...

Android 补件动画 TweenAnimation 简单DEMO

透明度动画AlphaAnimation 旋转动画RotateAnimation 缩放动画ScaleAnimation 平移缩放动画TranslateAnimation 动画集合AnimationSet...

TweenAnimation补间动画的使用

Android动画分类补间动画(Tween动画) *完成视图简单的变化,比如,渐变,缩放,旋转,移动,综合等等帧动画(Frame动画) *帧动画是在短时间内连续显示一系列图像的过程,其显示效果是一...

TweenAnimation 补间动画

这里有几篇比较好的相关文章: Animation 动画详解(一)——alpha、scale、translate、rotate、set的xml属性及用法  Animation动画详解(二)——I...

Android动画之ViewAnimation(TweenAnimation)视图动画(补间动画)

概述 Android动画主要有三大类: View Animation: 视图动画在古老的Android版本系统中就已经提供了,只能被用来设置View的动画。 ...

Android动画学习篇(一)【TweenAnimation】

动画基础篇学习之TweenAnimation     基于上一篇我们简单的提到了ObjectAnimator动画,这一篇我们一起学习一下动画初级篇(视图动画/补间动画)

Android动画之TweenAnimation

Android动画之TweenAnimation 上一篇博客中我们对Android中动画的分类进行了说明,本篇博客主要对View Animation视图动画,也就是TewwnAnimation进行讲...

TweenAnimation 渐变动画

TweenAnimationTweenAnimation 又称为(View Animation)是单个对象的动画。主要由以下几种: AlphaAnimation 渐变动画 RotateAnimati...

Android补间动画

  • 2016-05-08 22:50
  • 1.26MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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