View Animation(视图动画)

原文:Android Developers——View Animation

视图动画

你可以利用视图动画系统为你的View制作补间动画,即根据起点、终点、尺寸变化、旋转角度等条件计算出的动画。
补间动画可以在你的View上添加许多效果(位移、缩放、旋转、透明度变化等)。比如说,如果你有一个TextView对象,你可以移动、旋转、缩放它,如果它有背景图,那么背景图也会跟着变化。animation包提供了制作补间动画可能用到的所有类。
补间动画是由XML文件中或是代码中的一系列的动画指令定义的。我们推荐使用XML文件,因为它的可读性、复用性、易修改性比代码更强,和我们推荐使用布局文件来设计UI同样道理。下面的例子中,我们使用了XML。如果想知道如何在代码中定义,可以参考AnimationSet类以及其他Animation的子类。
动画指令定义了我们想要发生的变化、变化发生的时间以及变化会持续多久。这些变化可以是同时发生的,也可以是按照顺序发生的。例如,你可以让一个TextView的内容从左边移动到右边,然后旋转180度,也可以让平移和旋转同时发生。每种变化都有一系列的参数(旋转角度、初始位置与终点位置等),也有一些参数是所有变化共用的(开始时间、持续时间等)。如果想要动画同时发生,那么就将开始时间设置为同一个时间点,如果想要动画按顺序发生,那么就根据动画的持续时间计算出每个动画的开始时间。
视图动画文件应当被放在你的Android工程的res/anim/文件夹中。文件必须有一个单独的根标签,可以是<alpha>,<scale>,<rotate>,<translate>,一个插值器(intepolator),也可以是一个<set>。所有动画默认是同时的,如果要它们按次序,必须设置startOffset属性。
下面的动画让一个View先收缩,然后同时收缩旋转。

<set android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
           android:fromXScale="1.4"
           android:toXScale="0.0"
           android:fromYScale="0.6"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400"
           android:fillBefore="false" />
        <rotate
           android:fromDegrees="0"
           android:toDegrees="-45"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400" />
    </set>
</set>

屏幕的原点在左上角(这个例子中没用到),并且当你向右或下移动时坐标数字增大。
像pivotX这样的参数,可以和对象本身相关,也可以和对象的父布局相关,因此你要注意使用合适的格式(“50”代表父布局的50%,“50%”代表自己的50%)。
你可以通过Intepolator来确定动画的变化趋势。Android系统提供了许多的Interpolator子类,例如AccelerateInterpolator,它让变化在开始时慢并且逐渐加速。每个Intepolator都有一个可以在XML中使用的属性值。
假设我们有一个储存在res/anim文件夹下的,名为hyperspace_jump.xml的动画文件,我们可以这么在代码中使用:

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

关于视图动画的更多信息:https://developer.android.google.cn/guide/topics/resources/animation-resource.html#View

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值