轉自: http://www.gcssloop.com/customview/CoordinateSystem
一.屏幕座標系和數學座標系的區別
由於移動設備一般定義屏幕左上角爲座標原點,向右爲x軸增大方向,向下爲y軸增大方向,所以在手機屏幕上的座標系與數學中常見的座標系是稍微有點差別的,詳情如下:
(PS:其中的∠a 是對應的,注意y軸方向!)
實際屏幕上的默認座標系如下:
PS: 假設其中棕色部分爲手機屏幕
二.View的座標系
注意:View的座標系統是相對於父控件而言的.
getTop(); //獲取子View左上角距父View頂部的距離
getLeft(); //獲取子View左上角距父View左側的距離
getBottom(); //獲取子View右下角距父View頂部的距離
getRight(); //獲取子View右下角距父View左側的距離
如下圖所示:
三.MotionEvent中 get 和 getRaw 的區別
event.getX(); //觸摸點相對於其所在組件座標系的座標
event.getY();
event.getRawX(); //觸摸點相對於屏幕默認座標系的座標
event.getRawY();
如下圖所示:
PS:其中相同顏色的內容是對應的,其中爲了顯示方便,藍色箭頭向左稍微偏移了一點.
四.核心要點
序號 | 要點 |
---|---|
1 | 在數學中常見的座標系與屏幕默認座標系的差別 |
2 | View的座標系是相對於父控件而言的 |
3 | MotionEvent中get和getRaw的區別 |