博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android ViewPropertyAnimator:让动画变得简单起来!
阅读量:6464 次
发布时间:2019-06-23

本文共 1821 字,大约阅读时间需要 6 分钟。

官网地址: https://developer.android.com/reference/android/view/ViewPropertyAnimator.html

###ViewPropertyAnimator的优势: 当一个View的几个属性并行执行动画时,提供了一种更简单的实现方式。ViewPropertyAnimator是在3.1系统中加入的,ViewPropertyAnimator跟ObjectAnimator很像,也能改变View的实际值,但是ViewPropertyAnimator只能作用于View而不能作用于其他object 。假如需要同时对多个属性执行动画时,ViewPropertyAnimator效率更高,代码更简洁、更易读。

常用方法 备注
translationX(float value)、translationY(float value) translationX、translationY分别为向X、Y轴的移动value的距离
x(float value)、y(float value) 如x(valueX)、y(valueY):将目标View移动到(valueX,valueY)的坐标点上
alpha() 设置View的透明度
rotation() 旋转View
scaleX(float value)、scaleY(float value) 设置View的放缩,value是倍数,如设置scaleX(2f)是View在X轴方向放大2倍,scaleY同理
setDuration(long duration) 设置动画持续时间
setStartDelay(long startDelay) 动画开始之前的延迟时间
setListener(Animator.AnimatorListener listener) 动画监听
setInterpolator(TimeInterpolator interpolator) 时间插值器,用来修饰动画效果
setUpdateListener(ValueAnimator.AnimatorUpdateListener listener) API 19或以上使用 动画更新回调
withStartAction(Runnable runnable) 动画开始时设置的行为
withEndAction(Runnable runnable) 动画结束时设置的行为

###ViewPropertyAnimator和ObjectAnimator使用对比

先看效果图:

如上图中的效果,将View移动到(500f,500f)坐标,分别使用ViewPropertyAnimator和ObjectAnimator来实现:

1、多个ObjectAnimator 组合:

ObjectAnimator animX = ObjectAnimator.ofFloat(myView, "x", 500f);ObjectAnimator animY = ObjectAnimator.ofFloat(myView, "y", 500f);AnimatorSet animSetXY = new AnimatorSet();animSetXY.playTogether(animX, animY);animSetXY.start();复制代码

2、或者使用一个ObjectAnimator+PropertyValuesHolder :

PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("x", 500f);PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("y", 500f);ObjectAnimator.ofPropertyValuesHolder(myView, pvhX, pvyY).start();复制代码

3、使用ViewPropertyAnimator:

myView.animate().x(500f).y(500f).start();复制代码

可见在特定情况下使用ViewPropertyAnimator可以大大简化了代码量和可阅读性。

转载于:https://juejin.im/post/5a33e7ab51882549a746463e

你可能感兴趣的文章
寻找最小的k个数
查看>>
CSS3中的动画效果记录
查看>>
CI框架整合微信公共平台接口
查看>>
request.getScheme()的使用方法
查看>>
Android快速开发常用知识点系列目录
查看>>
Java ActiveMQ队列模式案例
查看>>
EJB2的配置
查看>>
最容易理解的对卷积(convolution)的解释
查看>>
《机器学习实战》知识点笔记目录
查看>>
完美解决NC502手工sql的查询引擎排序及合计问题
查看>>
Tiny语言执行环境TM机源码
查看>>
PE文件之资源讲解
查看>>
windows 7/mac编译cocos2d-x-3.2*的android工程报错
查看>>
MYSQL导入导出.sql文件(转)
查看>>
git review报错一例
查看>>
Tomcat在Linux上的安装与配置
查看>>
《信息安全系统设计基础》 课程教学
查看>>
Linux平台下使用rman进行oracle数据库迁移
查看>>
全栈工程师学习Linux技术的忠告
查看>>
iOS自定制tabbar与系统的tabbar冲突,造成第一次点击各个item图片更换选中,第二次选中部分item图片不改变...
查看>>