Android 动画

Android 动画

分类
  • 帧动画
  • view动画也叫补间动画
  • 属性动画
1. 帧动画(AnimationDrawable)

使用:

在xml中定义一组图片,通过getBackgroud()相关方法获取并转化为AnimationDrawable对象,执行帧动画。

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
	android:oneshot="false">
	<item android:drawable="@drawable/image01" android:duration="500"/>
	<item android:drawable="@drawable/image02" android:duration="500"/>
	<item android:drawable="@drawable/image03" android:duration="500"/>
</animation-list>

 // Load the ImageView that will host the animation and
 // set its background to our AnimationDrawable XML resource.
 ImageView img = (ImageView)findViewById(R.id.spinning_wheel_image);
  img.setBackgroundResource(R.drawable.spin_animation);
 
 // Get the background, which has been compiled to an AnimationDrawable object.
 AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();

 // Start the animation (looped playback by default).
 frameAnimation.start();

2. view动画(补间动画)Animation

View动画的四种基本效果对应了四个Animation的子类:

  • TranslateAnimtion
  • Alpha
  • Rotation
  • Scale

使用:

xml 中缩放动画

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXScale="0.0"
    android:fromYScale="0.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1.0"
    android:toYScale="1.0"/>

代码中使用:

Animation translateAnimation = new TranslateAnimation(0,500,0,500);
    // 创建平移动画的对象:平移动画对应的Animation子类为TranslateAnimation
    // 参数分别是:
    // 1. fromXDelta :视图在水平方向x 移动的起始值
    // 2. toXDelta :视图在水平方向x 移动的结束值
    // 3. fromYDelta :视图在竖直方向y 移动的起始值
    // 4. toYDelta:视图在竖直方向y 移动的结束值
    translateAnimation.setDuration(3000);
    // 播放动画直接 startAnimation(translateAnimation)
    //如:
    mButton.startAnimation(translateAnimation);

View动画的组合动画–AnimationSet

巴拉巴拉

View动画的使用场景
  • LayoutAnimation
  • Activity的切换效果
  • Fragment的切换效果

3. 属性动画(Animator)

属性动画可以看作是view动画的增强版,他可以针对任何属性做变化

属性动画 API

  • Animator: 提供创建属性动画的基类,基本不会直接使用这个类。
  • ValueAnimator:属性动画用到的主要的时间引擎,负责计算各个帧的属性值,基本上其他属性动画都会直接或间接继承它;
  • ObjectAnimator:ValueAnimator的子类,对指定对象的属性执行动画。
  • AnimatorSet:Animator 的子类,用于组合多个 Animator。

具体可参考链接:属性动画

区别
  • view动画看起来是view移动了位置,但是实际上view还是在原始位置,点击事件等依然是原始位置响应
  • 属性动画 真实的移动了view的位置,点击事件也会随着view位置变化
  • 作用对象不同,补间动画只能作用在view上,属性动画可以作用在所有对象上。 属性变化不同,补间动画只是改变显示效果,不会改变view的属性,比如位置、宽高等,而属性动画实际改变对象的属性。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨三点的北京

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值