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

 

posted on 2011-07-06 12:34  张云飞VIR  阅读(2866)  评论(2编辑  收藏  举报