Android Animation

Animation从总体来说可以分为两类:
  Tweened Animations:该类提供了旋转,移动,伸展,淡入淡出等效果
  Frame-By-Frame Animations:该类可以创建一个Drawable序列,这些Drawable可以按照指定的事件间隔一个一个显示,和动画片差不多


一、Tweened Animations


Tweened Animations也有四种类型:


Alpha:淡入淡出效果
Scale:缩放效果
Rotate:旋转效果
Translate:移动效果


设置动画效果可以在XML文件中设置,也可以在Java代码中设置。我们先来讲解在Java代码中怎么设置这四种动画效果
Java代码中设置动画效果的步骤:
  创建一个AnimationSet对象(AnimationSet是存放多个Animations的集合)
  根据需要创建相应的Animation对象
  根据需要对Animation对象的各个属性进行设值
  将Animation对象添加到AnimationSet对象中
  使用控件的startAnimation()方法执行AnimationSet


Java代码中的通用属性:


setDuration(long durationMillis):设置动画持续事件(单位:毫秒)
setFillAfter(boolean fillAfter):如果fillAfter设为true,则动画执行后,控件将停留在动画结束的状态
setFillBefore(boolean fillBefore):如果fillBefore设为true,则动画执行后,控件将回到动画开始的状态
setStartOffset(long startOffset):设置动画执行之前等待的时间(单位:毫秒)
setRepeatCount(int repeatCount):设置动画重复的次数
setInterpolator(Interpolator i):设置动画的变化速度
setInterpolator(new AccelerateDecelerateInterpolator()):先加速,后减速
setInterpolator(new AccelerateInterpolator()):加速
setInterpolator(new DecelerateInterpolator()):减速
setInterpolator(new CycleInterpolator()):动画循环播放特定次数,速率改变沿着正弦曲线
setInterpolator(new LinearInterpolator()):匀速 以及其他一些特定的动画效果





XML中设置动画效果的步骤:

在res文件夹下新建一个名为anim的文件夹

创建xml文件,并首先加入set标签(set标签就相当于Java代码中的AnimationSet)

在Set标签中加入alpha,scale,rotate,translate标签(相当于Java代码中的AlphaAnimation,ScaleAnimation,RotateAnimation,TranslateAnimation)

在Java代码中使用AnimationUtils的loadAnimation方法来加载XML文件,并得到一个Animation对象

使用控件的startAnimation()方法执行这个Animation对象

 

XML中的通用属性:

android:duration:设置动画持续事件(单位:毫秒)

android:fillAfter:如果fillAfter设为true,则动画执行后,控件将停留在动画结束的状态

android:fillBefore:如果fillBefore设为true,则动画执行后,控件将回到动画开始的状态

android:startOffset(long startOffset):设置动画执行之前等待的时间(单位:毫秒)

android:repeatCount(int repeatCount):设置动画重复的次数

android:interpolator:设置动画的变化速度 android:interpolator="@android:anim/accelerate_decelerate_interpolator":先加速,后减速

android:interpolator="@android:anim/accelerate_interpolator":加速

android:interpolator="@android:anim/decelerate_interpolator":减速

android:interpolator="@android:anim/cycle_Interpolator":动画循环播放特定次数,速率改变沿着正弦曲线

android:interpolator="@android:anim/linear_Interpolator":匀速 以及其他一些特定的动画效果

layoutAnimation标签中的android:animationOrder属性就是设置动画的显示顺序的,normal就是依次显示出来
如果要在Java代码中设置LayoutAnimation,可以按照如下设置
删掉list_anim_layout.xml文件,删掉main.xml下的ListView的android:layoutAnimation属性,最后,在OnClick方法里面加上如下代码:

1 Animation animation = (Animation) AnimationUtils.loadAnimation(this, R.anim.list_anim); 
2  LayoutAnimationController lac = new LayoutAnimationController(animation); 
3  lac.setOrder(LayoutAnimationController.ORDER_NORMAL); 
4  lac.setDelay(0.5f); 
5  mListView.setLayoutAnimation(lac); 

四、AnimationListener 还可以为Animation对象添加AnimationListener监听器。监听动画执行的各阶段。

AnimationListener主要包含三个方法:

  onAnimationEnd:动画结束

  onAnimationStart:动画开始

  onAnimationRepet:动画重复


http://www.cnblogs.com/laxlerbo/p/3835503.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值