今天在工作中做了一些动画效果,其中在TranslateAnimation遇到了一些坑,且记着,避免以后遇到又要挖坑。
TranslateAnimation有三个构造函数,今天用到是TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta);按照Google给的文档,这几个参数分别是 :
float fromXDelta 动画开始的点离当前View X坐标上的差值
float toXDelta 动画结束的点离当前View X坐标上的差值
float fromYDelta 动画开始的点离当前View Y坐标上的差值
float toYDelta 动画开始的点离当前View Y坐标上的差值
搞明白这几个参数还是很有必要的,上面的解释已经很清楚了,但是早上的时候我只是过了一下,并没有去理解它,所以绕了一大圈。因此有空的时候还是多看看api文档。。。
好了,现在来说说今天碰到的坑,今天要做的动画是做一个按钮,点击之后从按钮处平移出一排按钮,刚开始就直接用TranslateAnimation,然后用animation.setFillAfter(true) 让他固定住,但是实际效果却是菜单键真正的焦点并没有随之平移过来,就是按钮的监听位置还是在原先的位置,,Google了一下,发现大部分都是在他AnimationListener里面去监听,当执行到onAnimationEnd的时候停止动画,并且再重新设定他的坐标,想要了解的可以去Google一下,应该有很多。但是可能是我才疏学浅吧,试了几次没有成功的,郁闷啊。
之后又去查阅了下他的构造函数,深刻的理解了下他的意义,原来Google的做法并不是以上的那种,结合到今天做的效果就是,先将菜单的位置定到之后将显示的位置,隐藏他们,然后将fromYDelta定义到你想让他出现的地方,将toXDelta定义为0,之后执行动画,大功告成。
第一次写博客,有一些乱,希望是个好的开始!
源码下载地址:http://download.csdn.net/detail/troyxlin/7701287
==================================================================
*欢迎转载,尊重原创,所以转载请注明出处。
*http://blog.csdn.net/troyxlin/article/details/38324659
==================================================================