本篇是关于ObjectAnimator的演示
ObjectAnimator是针对有setXxxxxx方法的属性,进行的"Xxxxxx"属性变化动画
绘制部分就不废话了,前面已经说很多了,直接进入主题
一、下移示例:
![9414344-d069aa61e40ea1ad.gif](https://i-blog.csdnimg.cn/blog_migrate/9fae67430811f1d80ef70f53eb01a535.webp?x-image-process=image/format,png)
下移动画.gif
/**
* 下移动画
*/
private ObjectAnimator mMoveDown;
float translationY = getTranslationY();//当前Y偏移量
mMoveDown = ObjectAnimator//创建实例
//(View,属性名,初始化值,结束值)
.ofFloat(this, "translationY", translationY, translationY + 300)
.setDuration(1000);//设置时常
mMoveDown.start();//开启动画
加上背景看一下,可以看出是整个View进行了变化。
![9414344-28132b3fcafc0602.gif](https://i-blog.csdnimg.cn/blog_migrate/6f7a179e3bb7562d103a1f96f2c8fb46.webp?x-image-process=image/format,png)
加背景.gif
常用属性一览:
属性名 | 演示 | 解释 |
---|---|---|
alpha |
![]() | 透明度1~0 |
translationX |
![]() | X方向移动 |
translationY |
![]() | Y方向移动 |
rotation |
![]() | 旋转(默认View中心点) |
rotationX |
![]() | X轴旋转(默认View中心横轴) |
translationY |
![]() | Y轴旋转(默认View中心纵轴) |
scaleX |
![]() | X缩放 倍数 |
scaleY |
![]() | Y缩放 倍数 |
二、其他
1.旋转缩放中心点设置:
setPivotX(200);
setPivotY(200);
![9414344-f9095bb28582ce1b.gif](https://i-blog.csdnimg.cn/blog_migrate/d8f6b7b3ca8571f7e4ee28d9c7d4fb75.webp?x-image-process=image/format,png)
旋转中心点.gif
2.多参数
0-->360 360-->0 0-->90
.ofFloat(this, "rotation", 0, 360,360,0,0,90)
![9414344-0a624776a2ee80ac.gif](https://i-blog.csdnimg.cn/blog_migrate/d8de0dc10aa82499c7a56034f42373a6.webp?x-image-process=image/format,png)
多参数.gif
3.延迟、重复、重复模式
重复模式:ValueAnimator.RESTART(1)和ValueAnimator.REVERSE(2)
重复次数:ValueAnimator.INFINITE为无限循环(-1)
translationX.setStartDelay(1000);
translationX.setRepeatCount(2);
translationX.setRepeatMode(ValueAnimator.RESTART);
RESTART重复效果
![9414344-6ce2e1b025f3795c.gif](https://i-blog.csdnimg.cn/blog_migrate/78e3af7c9ea7c52915f3807c221268ad.webp?x-image-process=image/format,png)
延迟,RESTART重复.gif
REVERSE重复效果
![9414344-6a5f9467aa1bf65c.gif](https://i-blog.csdnimg.cn/blog_migrate/01b41cfbbcb76e3c1d9747520a4a4083.webp?x-image-process=image/format,png)
REVERSE重复.gif
三、自定义ObjectAnimator属性
内置的只是一些常用的,我们也可以自定义自己的属性
1.自定义圆的大小动画
必须用一个setXxx的方法,属性名则为xxx,调用重绘方法
public void setCircleR(float circleR) {
mCircleR = circleR;
invalidate();//记得重绘
}
private ObjectAnimator circleR() {
return ObjectAnimator//创建实例
//(View,属性名,初始化值,结束值)
.ofFloat(this, "circleR", 100, 50,100,20,100)
.setDuration(3000);//设置时常
}
![9414344-17adabf8ad0b5a2e.gif](https://i-blog.csdnimg.cn/blog_migrate/4f847bd64fc50c4c52dbffc85c5c0a69.webp?x-image-process=image/format,png)
自定义半径.gif
2.自定义颜色动画
public void setColor(int color) {
mColor = color;
invalidate();
}
private ObjectAnimator color() {
ObjectAnimator color = ObjectAnimator//创建实例
//(View,属性名,初始化值,结束值)
.ofInt(this, "color", 0xff0000ff,0xffF2BA38,0xffDD70BC)
.setDuration(3000);
color.setEvaluator(new ArgbEvaluator());//颜色的估值器
return color;
}
![9414344-22fac2a00af843af.gif](https://i-blog.csdnimg.cn/blog_migrate/506ecc0d6f30daa58ddaa1646477e3ae.webp?x-image-process=image/format,png)
自定义颜色.gif
下一篇将会带来:set动画集来控制多个动画,以及动画的监听。
后记、
1.声明:
[1]本文由张风捷特烈原创,转载请注明
[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力
2.连接传送门:
更多安卓技术欢迎访问:安卓技术栈
我的github地址:欢迎star
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
3.联系我
QQ:1981462002
邮箱:1981462002@qq.com
微信:zdl1994328
4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
![9414344-c474349cd3bd4b82.jpg](https://i-blog.csdnimg.cn/blog_migrate/949397de52d903ca936b083656cf797f.webp?x-image-process=image/format,png)
公众号.jpg