Android属性动画---Property Animation



    用ViewPropertyAnimator制作动画

    ViewPropertyAnimator类使用一个单一的Animator对象,给一个View对象的几个动画属性平行处理提供一种简单的方法。它的行为非常像ObjectAnimator类,因为它修改了View对象属性的实际的值,但是当多个动画属性同时处理时,它会更加高效。另外,使用ViewPropertyAnimator类的代码更加简洁和易于阅读。以下代码片段显示了在同时处理View对象的x和y属性动画效果时,使用多个ObjectAnimator对象、一个单独的ObjectAnimator对象和ViewPropertyAnimator对象之间的差异:

    过个ObjectAnimator对象:

    ObjectAnimator animX = ObjectAnimator.ofFloat(myView, "x", 50f);

    ObjectAnimator animY = ObjectAnimator.ofFloat(myView, "y", 100f);

    AnimatorSet animSetXY = new AnimatorSet();

    animSetXY.playTogether(animX, animY);

    animSetXY.start();

    一个ObjectAnimator对象:

    PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("x", 50f);

    PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("y", 100f);

    ObjectAnimator.ofPropertyValuesHolder(myView, pvhX, pvyY).start();

    ViewPropertyAnimator对象:

    myView.animate().x(50f).y(100f);

     

    在XML中声明动画

    属性动画系统会让你用XML来声明属性动画,而不是用编程的方式来做它。通过XML中定义你的动画,能够更加容易的在多个Activity中重用动画,并且更加容易的编辑动画的播放顺序。

    从Android3.1开始,要把使用新的属性动画的API的动画文件与那些使用传统的视图动画框架区分开,你应该把属性动画的XML文件保存在res/animator/目录中(而不是res/anim/)。animator目录名是可选的,但是如果想要使用Eclipse ADT插件(ADT11.0.0+)中的布局编辑器,就必须使用animator目录,因为ADT只搜索res/animator目录中属性动画资源。

    以下是属性动画类在XML声明中所使用的对应的XML标签:

    · ValueAnimator - <animator>

    · ObjectAnimator - <objectAnimator>

    · AnimatorSet - <set>

    以下示例顺序的播放两组对象动画,第一组动画中嵌套了一个同时播放两个对象的动画:

    <set android:ordering="sequentially">

        <set>

            <objectAnimator

                android:propertyName="x"

                android:duration="500"

                android:valueTo="400"

                android:valueType="intType"/>

            <objectAnimator

                android:propertyName="y"

                android:duration="500"

                android:valueTo="300"

                android:valueType="intType"/>

        </set>

        <objectAnimator

            android:propertyName="alpha"

            android:duration="500"

            android:valueTo="1f"/>

    </set>

    为了运行这个动画,在代码中,必须把这个XML资源填充到一个AnimatorSet对象中,并且在开始播放这个动画集之前,要把这个动画集合设置给目标对象。调用setTarget()方法就可以方便的把AnimatorSet对象中的所有子对象设置给一个单一的目标对象。以下代码显示了做这件事的方法:

    AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.anim.property_animator);

    set.setTarget(myObject);

    set.start();

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

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

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值