安卓自定義View基礎-座標系
阿新 • • 發佈:2019-02-16
一.螢幕座標系和數學座標系的區別
由於移動裝置一般定義螢幕左上角為座標原點,向右為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的區別 |