Android Animator setTarget

134 篇文章 0 订阅
113 篇文章 0 订阅

一直以来,在使用ObjectAnimator等Animator的时候, animator的Target一般都是直接设置为某个View,常规都是这么用,通过Animator的不断的改变 target view的属性,从而实现动画, 今天发现了一种非常规的用法,比如一个奇葩的需求或者场景, 有两个view,对于view1 要求scale效果,对于view2要求alpha效果,常规可以给这两个view分别搞两个Animator,分别改变scale和alpha,而target分别就是view1和view2, 其实完全可以搞一个类C, 这个类有setScale和setAlpha的方法,而在setScale的方法里面真正的调用view1的setScale,而setAlpha的方法里真正调用view2的setAlpha方法,外面只需要一个ObjectAnimator, 这个Animator的target就是C类型的对象,这样一个Animator就可以调节两个view了,注意ObjectAnimator运作的前提是其所要实现的动画所调整的属性的 set/get方法都在target里实现了,项目里使用这个技法的原因是将原来一堆view组成的一个复合view换成一个view,所有原来通过view组合实现视觉效果都直接draw出来,而原来某些animator的调用的code则不用改变,只需用这种方法将新的view包起来,animator在动画过程中调用了setXXX的时候会将整个view invalidate 以实现animator效果.

Animator的setTarget()接受Object类型参数,就隐含了这个意思.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值