在我們討論 Androi 座標系統前,先讓我們來看看一個 View 所在的層級。這樣會讓我們更能夠理解, Android 座標系統。
從上圖看到我們就可以知道我們常用的 View (無論是 Button, ImageView, EditView) 是透過多少層堆疊出來的。
在建立一個 Activity 建立之初,他會實例化一個 Phone Window 這個 Phone Window 就是我們使用者所看到的 Screen 。
而 Phone Window 會建立一個 DecorView 將所有與 View 有關的東西都交給 DecorView 來處理,由上圖就可以看出,DecorView 包含了 StatusBar, ActionBar 與 ContentView。
這裡的 ContentView 就是我們常在 onCreate 裡看到 setContentView 所處理的事情。
將 Activity 所傳來的 layout 檔透過 inflate 轉換成 View 在 DecorView 上使用。
接下來讓我們聚焦在 ViewGroup 與 View 中吧
從上圖我們可以看到 Android 座標系統是以左上角(紅點處)為絕對座標(0, 0),向右為正 X 軸 向下為正 Y 軸。
綠色點為 ViewGroup 的原點 (0, 0)
星號為使用者接觸點。
在使用者按下螢幕的同時,我們就可以運用 Android 系統所提供的方法來取得座標。
舉例來說,我們可以透過 function getX or getY ,來獲得紅色實線的長度。(這也代表,使用者接觸點在 View 裡的座標)
第二個例子,我們可以透過 function getRawX or getRawY 來獲得 紅色實線加虛線的長度。(這也代表,使用者接觸點在 Decor View 裡的座標)
有了這個概念之後,我們透過其他 function 取得座標時就能夠更清楚它的來源以及我們可以如何好好的使用他們。
筆者初學 Android 如有任何錯誤煩請留言指教。
今天就先這樣囉,我們明天見。