Android 动画介绍(一)

下面记录下关于Android动画相关信息

内容参考:
Android开发(26)–补间动画(Tween)的实现
Android 属性动画(Property Animation) 完全解析 (上)


android动画大体分3类:

View Animation(Tween Animation) 补间动画

给出2个关键帧,通过算法将给定属性值 在给定时间内 在2个关键帧之间渐变;
补间动画只能应用于View对象,且只支持一部分属性
支持属性:
AlphaAnimation:透明度(alpha)渐变效果,对应alpha标签。

TranslateAnimation:位移渐变,需要指定移动点的开始和结束坐标,对应translate标签。

ScaleAnimation:缩放渐变,可以指定缩放的参考点,对应scale标签。

RotateAnimation:旋转渐变,可以指定旋转的参考点,对应rotate标签。

AnimationSet:组合渐变,支持组合多种渐变效果,对应set标签。

而且 补间动画只是改变视觉位置,但实际点击区域任然没有变化
使用方式
xml定义或者类中定义
demo:

TranslateAnimation translateAnimation = new TranslateAnimation(0, 
      200, 0, 0);
translateAnimation.setDuration(2000); 
imageView.startAnimation(translateAnimation); 

定义了一个平移动画,从(0,200)移动到(0,0);
动画执行时间2S

<translate xmlns:android="http://schemas.android.com/apk/res/android"  
android:interpolator="@android:anim/accelerate_decelerate_interpolator"  
android:fromXDelta="0"  
android:toXDelta="0"  
android:fromYDelta="200"  
android:toYDelta="0"  
android:duration="2000"/>   

还可以给动画设计监听
Animation.setAnimationListener(new AnimationListener())

补间动画还提供及Interpolator(插值器)来复制实现动画效果,例如先加速在减速,撞墙回弹等更多高级效果;
AccelerateInterpolator 非线性加速插值器
AccelerateDecelerateInterpolator 非线性减速插值器
LinearInterpolator 线性插值器
BounceInterpolator 弹跳插值器
AnticipateInterpolator 回荡秋千插值器
AnticipateOvershootInterpolator
CycleInterpolator 正弦周期变化插值器
OvershootInterpolator 超过目标1次后回复
更多详细请参见 android动画(一)Interpolator

Drawable Animatio 逐帧动画

顾名思义,需要提前定义好每一帧的图片,然后播放帧动画;
因为需要定义每一帧,所以一般使用xml定义方便;
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/frame_1" android:duration="200" />
<item android:drawable="@drawable/frame_2" android:duration="200" />
<item android:drawable="@drawable/frame_3" android:duration="200" />
<item android:drawable="@drawable/frame_4" android:duration="200" />
</animation-list>

java:
//将该逐帧xml文件设置为ImageView的背景
ImageView loadingImg = (ImageView) findViewById(R.id.loading);
loadingImg.setBackgroundResource(R.drawable.loading);
loadingAnimation = (AnimationDrawable) loadingImg.getBackground();

AnimationDrawable的start()方法不能够在Activity的onCreate()调用,因为这个时候,AnimationDrawable可能还没有完全的绑定到Window上。如果我们想马上播放动画,我们可以在 onWindowFocusChanged()方法里面调用,因为这个方法是在window已经获取到焦点之后回调的,可以保证已经绑定结束。

Property Animatio 属性动画

这个是在Android 3.0中才引进的,属性动画跟补间动画比,可以弥补补间动画的不足,它可以直接改变目标的实际属性(点击区域等),它拥有更强大的属性控制;
相关详情参见
Android 属性动画(Property Animation) 完全解析 (上)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值