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

本文深入解析Android SDK中的渐变动画类型,包括alpha、scale、translate和rotate动画,并详细介绍了如何通过XML文件配置动画效果。通过实例演示动画的实现步骤,提供直观的代码示例帮助开发者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值