Android自定義View之旅(基礎篇1:座標系)

轉自: 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左側的距離

如下圖所示:

View座標系

三.MotionEvent中 get 和 getRaw 的區別

event.getX();       //觸摸點相對於其所在組件座標系的座標
event.getY();

event.getRawX();    //觸摸點相對於屏幕默認座標系的座標
event.getRawY();

如下圖所示:

PS:其中相同顏色的內容是對應的,其中爲了顯示方便,藍色箭頭向左稍微偏移了一點.

get雨getRaw區別

四.核心要點

序號 要點
1 在數學中常見的座標系與屏幕默認座標系的差別
2 View的座標系是相對於父控件而言的
3 MotionEvent中get和getRaw的區別

五.參考文章:





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章