在自定義 View 中和處理事件沖突時總需要獲得各種坐標值倍啥,記一帖以供學習注服。
1.View 提供獲取坐標的方法(見圖)
getTop():獲取到的是 View 自身的頂邊
到其父布局頂邊
的距離
getLeft() :獲取到的是 View 自身的左邊
到其父布局左邊
的距離
getRight():獲取到的是 View 自身的右邊
到其父布局左邊
的距離
getBottom():獲取到的是 View 自身的底邊到
其父布局頂邊
的距離
getHeight():獲取 View 在屏幕中的高度(pixels)
getWidth():獲取 View 的屏幕中寬度(pixels)
getMeasureHeight():獲取 View 的實際高度
getMeasureWidth():獲取 View 的實際高度
*getScrollY():獲取 View 的上下滑動距離( > 0)
*getScrollX():獲取 View 的左右滑動距離( > 0)
getHeight() 和 getMeasureHeight()區(qū)別:
在 View 的顯示全部在屏幕中時韭邓,兩者相同,但是當 View 的顯示超出屏幕時溶弟,
getHeight()
為 View在屏幕中的高度女淑,而getMeasureHeight()
為 View 的實際高度。
兩者的關系為:
getMeasureHeight() = getHeight() + View 在屏幕外的高度
getWidth()
和getMeasureWidth()
同理
2.MotionEvevt 提供的方法
getX():獲取點擊事件距離控件左邊
的距離辜御,即視圖坐標
getY():獲取點擊事件距離控件頂邊
的距離鸭你,即視圖坐標
getRawX():獲取點擊事件距離整個屏幕左邊
的距離,即視圖坐標
getRawY():獲取點擊事件距離整個屏幕頂邊
的距離擒权,即視圖坐標