1. 程式人生 > >Android中的視窗座標體系(分二種)、獲取座標的方法

Android中的視窗座標體系(分二種)、獲取座標的方法

  1. Android座標系

    在Android中,將螢幕最左上角的頂點作為Android座標系的原點,從這個點向右是X軸正方向,從這個點向下是Y軸正方向。這裡寫圖片描述
    系統提供了getLocationOnScreen(intlocation[])獲取Android座標系中點的位置,即該View左上角在Android座標系的座標。另外,在觸控事件中使用`getRawX() getRawY()方法所獲得的座標同樣是Android座標系的座標。

  2. 檢視座標系

    它描述的是子檢視在父檢視中的位置關係。
    檢視座標系
    如上圖所示,檢視座標系是以父檢視的左上角為座標原點的。相應的原點向右為x軸正方向,原點向下為y軸正方向。在觸控中,通過getX()和getY()來獲取的座標值就是檢視座標系中的座標值。

獲取座標的方法

在android中,提供了非常豐富的方法來獲得座標值和相對距離。但是在使用這些方法的時候,一定要清楚是以哪個座標系為標準來獲取的。

為了將這些方法一一說明清楚,我也準備了一張圖,如下:
獲取座標的方法
上面的那張圖很好的說明了每個方法獲得的座標值或者距離都是從哪裡到哪裡的。說明一下,圖中有三個黑色的框框,最外層的是手機螢幕,中間層的是ViewGroup,最內層的是ViewGroup中放置的view。

其實上圖中標註的方法可以分為兩類,一類是View提供的方法,一類是MotionEvent提供的方法。分別說明如下:

View提供的獲取的座標以及距離的方法

getTop() 獲取到的是view自身的頂邊到其父佈局頂邊的距離
getLeft() 獲取到的是view自身的左邊到其父佈局左邊的距離
getRight() 獲取到的是view自身的右邊到其父佈局左邊的距離
getBottom() 獲取到的是view自身底邊到其父佈局頂邊的距離

MotionEvent提供的方法:

getX() 獲取點選事件距離控制元件左邊的距離,即檢視座標
getY() 獲取點選事件距離控制元件頂邊的距離,即檢視座標
getRawX() 獲取到的是點選事件距離整個螢幕左邊的距離,即絕對座標
getRawY() 獲取到的是點選事件距離整個螢幕頂邊的距離,即絕對座標