码迷,mamicode.com
首页 > 移动开发 > 详细

Android Animation 动画学习笔记

时间:2016-08-16 23:53:40      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

最近两天学了android 动画方面的知识,从一点不懂到自己研究确实有收获。

Animation 分为:

<alpha  /> 透明度渐变
<scale  /> 尺寸渐变
<translate  /> 位移动画
<rotate  /> 旋转动画      

在XML 和在JavaCode中都可以定义,方法分别为

XML中 javaCode中
<alpha  /> AlphAnimation
<scale  /> ScaleAnimation
<translate  /> TranslateAnimation
<rotate  /> RotateAnimation

 

在动画中,出现任何和坐标有关的数值,都是以刚开始动画的位置为参照位置画X、Y轴,如图:

   最外面绿框代表手机屏幕;

 小黄人所处位置为定义位置,所以就以这个位置为参照位置,即原点;

 然后按箭头所指方向为X、Y轴正方向区分正负,即:上为负,下为正,左为负,右为正。

技术分享

 

 

接下来分别解释

XML中:

(1)Alpha  透明度渐变动画

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android">
3     <alpha                                
4         android:duration="2000"
5         android:fromAlpha="0"
6         android:toAlpha="1.0"
7         />
8 
9 </set>

在每种动画的开头都要以这种动画的<alpha />开头和结尾,如上代码;
其中的 fromAlpha : 开始透明度;
    toAlpha : 最终透明度;
透明度:0是完全透明,
    1是完全不透明,
    从0.0~1.0用float字符型式来表示透明度;
duratiion: 动画完成时间(在多少ms内完成动画);
startOffset: 延迟一定时间后运行动画;

 

 

(2)Scale   尺寸渐变动画

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android">
 3     <scale
 4         android:duration="2000"
 5         android:fromXScale="0.1"      
 6         android:toXScale="1.0"     
 7         android:fromYScale="0.1"     
 8         android:toYScale="1.0"        
 9         android:pivotY="50"         
10         android:pivotX="50"          
11         />
12 
13 </set>

    fromXScale : 动画 起始时 X坐标上的伸缩尺寸
    toXScale : 动画 结束时 X坐标上的伸缩尺寸
    fromYScale : 动画 起始时 Y坐标上的伸缩尺寸
    toYScale : 动画 结束时 Y坐标上的伸缩尺寸
  以上四个属性都是浮点值类型: 0.0代表尺寸为零
                 0.0~1.0之间代表小尺寸(缩小原画)
                 1.0代表原尺寸无缩放
                 >1.0代表大尺寸(放大原画)

    pivotX 属性为动画相对于物件的X坐标的开始位置
    pivotY 属性为动画相对于物件的Y坐标的开始位置
  以上两个属性值 从0%-100%中取值;50%为物件的X或Y方向坐标上的中点位置;
  
  duratiion: 动画完成时间(在多少ms内完成动画);
  startOffset: 延迟一定时间后运行动画;

                 

 

 

(3)Translate  位移动画

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android">
 3     <translate
 4         android:duration="2000"
 5         android:fromYDelta="30"
 6         android:fromXDelta="30"
 7         android:toXDelta="-30"
 8         android:toYDelta="-30"
 9         />
10 
11 </set>

fromXDelta:动画开始时X坐标;
toXDelta : 动画结束时X坐标;
fromXDelta:动画开始时Y坐标;
toYDelta : 动画结束时Y坐标;

duratiion: 动画完成时间(在多少ms内完成动画);
startOffset: 延迟一定时间后运行动画;

 

 

(4)Rotate   旋转动画

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android">
 3     <rotate
 4         android:duration="2000"
 5         android:fromDegrees="0"
 6         android:toDegrees="360"
 7         android:pivotX="50"
 8         android:pivotY="50"
 9         />
10 
11 </set>

  formDegreea: 动画开始角度;
  toDegreea : 动画结束时角度,可以大于360°;(大于360°就是能多旋转几圈,可以自己试一下);
    当角度为负数——表示逆时针旋转
       当角度为正数——表示顺时针旋转              
         (负数from——to正数:顺时针旋转)   
         (负数from——to负数:逆时针旋转) 
           (正数from——to正数:顺时针旋转) 
           (正数from——to负数:逆时针旋转) 
     pivotX,pivotY:
              从0%-100%中取值           50%为物件的X或Y方向坐标上的中点位置;
      
    duratiion: 动画完成时间(在多少ms内完成动画);
    startOffset: 延迟一定时间后运行动画;

 

 

一些效果:

@android:anim/accelerate_interpolator: 越来越快

@android:anim/decelerate_interpolator:越来越慢

@android:anim/accelerate_decelerate_interpolator:先快后慢

@android:anim/anticipate_interpolator: 先后退一小步然后向前加速

@android:anim/overshoot_interpolator:快速到达终点超出一小步然后回到终点

@android:anim/anticipate_overshoot_interpolator:到达终点超出一小步然后回到终点

@android:anim/bounce_interpolator:到达终点产生弹球效果,弹几下回到终点

@android:anim/linear_interpolator:均匀速度。

不过我试过之后发现,在XML中写是没有起到实际作用的,要在JavaCode中调用才能显现出效果:

要在JavaCode中加入这种代码才能起到作用,可以自己试一下:
myAnimation.setInterpolator(new BounceInterpolator()); //弹球效果;


自己学会了基础的就可以深入的研究一下下,比如我发现这样子会更好看哦:
 1 <scale
 2         android:duration="2000"
 3         android:fromYScale="0dp"
 4         android:toYScale="1.0"
 5         android:fromXScale="0"
 6         android:toXScale="1.0"
 7         android:pivotY="50"
 8         android:pivotX="50"
 9         />
10 
11     <translate
12         android:duration="2000"
13         android:fromYDelta="20%p"
14         android:toYDelta="0"
15         />

把尺寸缩放和位移加起来之后,再在JavaCode中调用弹球效果,出来的画面果然更加好看哈哈哈(无心之举);
不过还是没有试出来连续动画,和逐帧播放不一样的那种,继续努力然后补充吧~

2016-08-16  22:41:12




 

 

Android Animation 动画学习笔记

标签:

原文地址:http://www.cnblogs.com/zxuan/p/5778145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!