自定義 View 系列(一)-座標系和檢視座標系
View 的簡介
View是Android所有控制元件的基類,接下來借鑑網上的一張圖片讓大家一目瞭然(圖片出自: ofollow,noindex">http://blog.51cto.com/wangzhaoli/1292313 )

image
圖片內容有點多,自定義 View 做得好事可以提升使用者對 APP 的體驗感的。接下來就學習一下 Android 的相關座標系。
Android 座標系
在物理中,要描述一個物體的運動,就必須選定一個參考系。所謂滑動,正式相對於參考系的運動。在Android中,將螢幕最左上角的頂點作為Android座標系的原點,從原點向右是X軸正方向,從原點向下是Y軸正方向:

image
系統提供了 getLocationOnScreen(intLocation[]) 這樣的方法來獲取 Android 座標中點的位置,即該檢視左上角在 Android 座標系中的座標。另外,在觸控事件中使用 getRawX() 和 getRawY() 方法所獲取的座標同樣是 Android 座標系中的座標。
檢視座標
Android 中除了上面所說的這種座標系之外,還有一個檢視座標系,他描述了子檢視在父檢視中的位置關係。這兩種座標系並不矛盾也不復雜,他們的作用是相輔相成的。
與 Android 座標系類似,檢視座標系同樣是以原點向右為X軸正方向,以原點向下為Y軸正方向。
只不過在檢視座標系中,原點不再是 Android 座標系中的螢幕左上角,而是以父檢視左上角為座標原點。

image
在觸控事件中,通過 getX() 和 getY() 所獲得的座標就是檢視座標中的座標。
在 Android 中,系統提供了非常多的方法來獲取座標值、相對距離等。方法多是好,但是不方便初學者學習,不知道什麼情況下使用。下面就總結了一些 API,結合 Android 座標系來看看該如何使用它們。

image
這些方法可以分成如下兩個類別:
View提供的獲取座標方法:
**getTop(): **獲取到的是View自身的頂邊到其父佈局頂邊的距離
**getLeft(): **獲取到的是View自身的左邊到其父佈局左邊的距離
**getRight(): **獲取到的是View自身的右邊到其父佈局左邊的距離
**getBottom(): **獲取到的是View自身的底邊到其父佈局頂邊的距離
另外View獲取自身寬高
**getHeight(): **獲取View自身高度
**getWidth(): **獲取View自身寬度
MotionEvent提供的方法:
**getX(): **獲取點選事件距離控制元件左邊的距離,即檢視座標
**getY(): **獲取點選事件距離控制元件東邊的距離,即檢視座標
**getRawX(): **獲取點選事件距離整個螢幕左邊的距離,即絕對座標
**getRawY(): **獲取點選事件距離整個螢幕頂邊的距離,即絕對座標
以上就是簡單的 Android 座標和 View 的檢視座標。