一、属性动画之不解缘(推荐阅读时间5分钟,赶时间的可以直接读第三部分3分钟,再赶时间的看demo1分钟,再再赶时间的看apk,30秒。再再再赶时间的,給我推荐东西吧,一定拜读)
Android的动画常见的大约有三种:补间动画,逐帧动画,属性动画。可我独爱属性动画(其实是实际的项目中遇到了,还一不小心进了坑)。属性动画是个小角色,也许都不爱理他的,说实在我以前也是这样的,以为它就是移动,旋转,缩放什么的,其实它也就是这样。但是如果你把他搭配起来,你就会发现自己有多年轻了。闲话不多说,只说一句本篇博客不是基本属性介绍,以及基本用法介绍,所以不会介绍一些很基本的属性,而是遇到的坑以及自己认为比较重要的地方。
二、属性动画之神作
apk(demo的可执行文件,没时间的可以下载,看效果)
填坑之前,先給大家来个效果图,这个效果,并不炫酷,吊炸天。只是做的时候很多和自己想的不一样(理想总是丰满的)。有想跳坑的,我不拦,可以先停下来,试一试怎么做。当然不得不说也有一直做动画,或者爬过坑的,能一下做出来。那有另当别论了。总之这里是想和大家分享一下。
三、属性动画之坑坑联合
实现这个效果说实在无非是两个动画的叠加,平移以及缩放,这个难度系数只能是0.9。剩下的99.1.完全靠人品。
我估计就是没有烧好香,唉都是泪啊。下面給大家介绍一下我试过的多种方法。每种方法在demo中都給出了相应的用例(没办法博主就是心好,自己都感动的那种)
在跳坑之前大家可以先看一下这幅图
这幅图重点理解getX()和getTranslationX()区别与父容器边距的关系。了解完以后就可以进入跳坑之旅。
1.坑坑组合一
translationX scalex
可以从效果动画中明显看出,第一次移动是对的,缩放有问题。但第二次移动时就不对了。这时大家可以看一下’x’属性和’translationX',考虑可能是使用错了属性。
2.坑坑组合二、
x ,scaleX
第一次移动还是对的(当然设定的置有根据参数进行修改),缩放仍然有问题,这考虑是不是两个动画顺序有问题,于是把动画顺序变了一下
3.坑坑组合三
发现换了还是不对。这坑还真不浅,仔细一开打印数据,图片缩放后,位置改变了,x,y却没有遍,这不是欺负人吗?弄的是哭笑不得啊。于是开始想解决的方法。第一种计算,算出多移动的距离。虽然不复杂,但挺恶心的。第二种改变图片的缩放中心,如果能够有这种属性,那就相当牛x了。于是百度了一下,哎,还真有,瞬间阴天转晴天。
4.填坑组合
setPivotX()设置旋转中心。顺便说一下,这里的中心点的位置是相对于控件自生的,比如(0,0)就是控件的左上角
三、胜过博客的demo
写了半天,还是感觉大家有demo会更亲切,更有感觉。希望demo能提升大家的体验,同时demo中有认为可以改善的地方(比如规范啊,或者bug什么的)欢迎私信。
四、吐槽一下(爱看不看)
居然不能传视频,害的我学会了root,学会了录屏,学会了视频转gif,都是套路啊
网友评论