• android开发(9) 渐变动画演示(Tween Animation)


    在Android SDK介绍了两种Animation:

    1. Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画,或者说 补间动画

    2. Frame Animation:顺序播放事先做好的图像,是一种画面转换动画,或者说 逐帧动画

    ----------------------------

    我们本文先了解下渐变动画,下一篇文章了解逐帧动画

    渐变动画的4种animation

    • alpha        渐变透明度动画效果
    • scale        渐变尺寸伸缩动画效果
    • translate  画面转换位置移动动画效果
    • rotate      画面转移旋转动画效果

    实现动画的步骤:

    1.准备一个animation对象,改对象可以看作是个动画对象,它描述(封装)了什么样式的动画。

    我们可以在代码里手动创建这些对象,对应的4个animaiton对象类:

    AlphaAnimation渐变透明度动画效果

    ScaleAnimation渐变尺寸伸缩动画效果

    TranslateAnimation画面转换位置移动动画效果

    RotateAnimation画面转移旋转动画效果

     

    我也可以写一个描述动画的xml文件,放到资源文件的anim文件夹下。然后,在代码里加载(load)这个描述的文件:

    int animationSrouceId  = 0;//资源文件的ID

    Animation ani1 = AnimationUtils.loadAnimation(
           getApplicationContext(), animationSrouceId);
      return ani1;   

    2.为view视图控件 指定 启动动画,调用startAnimation方法来完成。

         //组件播放动画 
         ImageView _imageView1;    
         _imageView1 = (ImageView)findViewById(R.id.imageView1);
         _imageView1.startAnimation(ani1); 

    -------------

    下图是我做的DEMO截图,动画的样式很难截图上来。我会在本文末尾放上源代码。

    下面是xml描述的animation动画

     透明alpha效果的代码:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
    <alpha
    android:fromAlpha="0.3"
    android:toAlpha
    ="1.0"
    android:duration
    ="2000"
    /> 
    <!-- 透明度控制动画效果 alpha
            浮点型值:
                fromAlpha 属性为动画起始时透明度
                toAlpha   属性为动画结束时透明度
                说明: 
                    0.0表示完全透明
                    1.0表示完全不透明
                以上值取0.0-1.0之间的float数据类型的数字
            
            长整型值:
                duration  属性为动画持续时间
                说明:     
                    时间以毫秒为单位
    -->
    </set>

    旋转(rotate)

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate 
            
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:fromDegrees
    ="0" 
            android:toDegrees
    ="+350"         
            android:pivotX
    ="50%" 
            android:pivotY
    ="50%"     
            android:duration
    ="3000" />  
    <!-- 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>

    缩放(scale)

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

              android:fromXScale
    ="0.0"
              android:toXScale
    ="1.4"
              android:fromYScale
    ="0.0"
              android:toYScale
    ="1.4"
              android:pivotX
    ="50%"
              android:pivotY
    ="50%"
              android:fillAfter
    ="false"
              android:duration
    ="700" />
    </set>
    <!-- 尺寸伸缩动画效果 scale
           属性:interpolator 指定一个动画的插入器
            在我试验过程中,使用android.res.anim中的资源时候发现
            有三种动画插入器:
                accelerate_decelerate_interpolator  加速-减速 动画插入器
                accelerate_interpolator        加速-动画插入器
                decelerate_interpolator        减速- 动画插入器
            其他的属于特定的动画效果
          浮点型值:
             
                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 ,该动画转化在动画结束后被应用
    -->

    位移(translate )

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

    />

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

     源代码下载

    参考文章:

    feisky 的博客 http://www.cnblogs.com/feisky/archive/2010/01/11/1644482.html

    http://www.eoeandroid.com/forum.php?mod=viewthread&tid=564
  • 相关阅读:
    修改python注册表
    python 调用exe程序
    python msg_box
    python pickle
    python send email
    get data from splunk
    剑指offer 14.代码的鲁棒性 链表中倒数第k个结点
    Kafka 与flume的整合
    Kafka Java API+自定义分区
    Kafka 命令行操作topic+producer+consumer详解
  • 原文地址:https://www.cnblogs.com/vir56k/p/2099078.html
Copyright © 2020-2023  润新知