android view getx 0,Android动画:解决通过View.getY()获取初始位置为0的问题
問題描述
View.getY()返回為0
問題背景
用ObjectAnimator進行平移動畫的時候需要獲取控件的初始位置以及結束位置,比如
ObjectAnimator animY = ObjectAnimator.ofFloat(rankRibbon, "Y", rankRibbon.getY(), rankRibbon.getY() + 30);
是將rankRibbon向下移動30px
也可以通過translationY設置控件的初始位置和平移相對距離
ObjectAnimator animY = ObjectAnimator.ofFloat(rankSlogan, "translationY", rankSlogan.getY(), -30);
是將rankSlogan向上移動30px
在這2個例子中都用到了getY(),通過getY返回該控件相對父控件的距離。
如果getY()返回是0就會出現動畫異常。
解決方式
如果一個View初始化的時候設置的是View.Gone,那么該view在getY的時候獲取的就是0,所以可以在xml里將View設置為invisiable,這樣就不影響正常的獲取view的位置。
在動畫中經常需要獲取View的位置,設置View的偏移,所以這個問題稍不注意就經常發生。
另一個問題
能夠通過在獲取getY之前setVisibility(View.VISIABLE)解決?
不能。這樣設置之后好像是起到了將View顯示的效果,但如果View并沒有完全顯示出來,馬上獲取getY有時也會是0,這樣getY就變成了一個偶現的問題(偶現的問題解決起來更麻煩)。
總結
以上是生活随笔為你收集整理的android view getx 0,Android动画:解决通过View.getY()获取初始位置为0的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: socket编程初级
- 下一篇: 更新鸿蒙系统运行评价,全球首批!升级使用