Android 动画(六)PropertyValuesHolder学习

PropertyValuesHolder

ObjectAnimator只能对单个属性进行操作,如果想实现比较复杂的效果就需要用到PropertyValuesHolder了。

1.1、概述

PropertyValuesHolder这个类的意义就是,它其中保存了动画过程中所需要操作的属性和对应的值。我们通过ofFloat(Object target, String propertyName, float… values)构造的动画,ofFloat()的内部实现其实就是将传进来的参数封装成 PropertyValuesHolder实例来保存动画状态。在封装成 PropertyValuesHolder实例以后,后期的各种操作也是以 PropertyValuesHolder 为主的。

创建PropertyValuesHolder实例的函数:

public static PropertyValuesHolder ofFloat(String propertyName, float... values)  
public static PropertyValuesHolder ofInt(String propertyName, int... values)   
public static PropertyValuesHolder ofObject(String propertyName, TypeEvaluator evaluator,Object... values)  
public static PropertyValuesHolder ofKeyframe(String propertyName, Keyframe... values)  
1.2、PropertyValuesHolder 之 ofFloat()、ofInt()讲解

构造函数:

public static PropertyValuesHolder ofFloat(String propertyName, float... values)  
public static PropertyValuesHolder ofInt(String propertyName, int... values) 

其中:

参数 描述
propertyName: 表示ObjectAnimator需要操作的属性名。即ObjectAnimator 需要通过反射查找对应属性的setProperty()函数的那个property
values: 属性所对应的参数,同样是可变长参数,可以指定多个,

而ObjectAnimator 的 ofFloat 如下:

public static ObjectAnimator ofFloat(Object target, String propertyName, float... values);

可以看到在 ObjectAnimator.ofFloat 中只比 PropertyValuesHolder 的 ofFloat 多了一个target,其它都是完全一样的!

将构造的PropertyValuesHolder实例设置进 ObjectAnimator:

public static ObjectAnimator ofPropertyValuesHolder(Object target,PropertyValuesHolder... values)

其中:

参数 描述
target: 指需要执行动画的控件
values: 是一个可变长参数,可以传进去多个 PropertyValuesHolder 实例,由于每个 PropertyValuesHolder 实例都会针对一个属性做动画,所以如果传进去多个 PropertyValuesHolder 实例,将会对控件的多个属性同时做动画操作。

示例代码:
xml:

            <Button
                android:id="@+id/bt_start_anim01"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="启动动画(PropertyValuesHolder)"/>

            <ImageView
                android:id="@+id/iv_image01"
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:layout_gravity="center"
                android:src="@drawable/gold_coin"/>

java代码:

    /**
     * 使用PropertyValuesHolder 设置复杂动画
     */
    private 
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值