阅读 43

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 ="schemas.android.com/apk/res/and…"   >
< 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 ="schemas.android.com/apk/res/and…" >
< 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 ="schemas.android.com/apk/res/and…" >
< 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 ="schemas.android.com/apk/res/and…" >
< 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 的博客 www.cnblogs.com/feisky/arch…

www.eoeandroid.com/forum.php?m…

 

文章分类
后端
文章标签