Android View體系(一)視圖座標系
前言
Android View體系是介面編程的核心,他的重要性不亞於Android四大組件,在這個系列中我會陸續講到View座標系、View的滑動、View的事件分發等文章來逐步介紹Android View體系。
1.View簡介
View是Android所有控制項的基類,同時ViewGroup也是繼承自View,看下面這張圖我們就會有一個直觀的瞭解:
vc7Sw8ezo9PDtcTV4tCpv9i8/ra8yse8zLPQ09pWaWV3o6zI57n7ztLDx7j8usO1xNXGztXBy1ZpZXe1xNaqyrbM5c+1o6zEx8O0ztLDx9TavefD5rHgs8zKsdTyu+G4/LzTtcS1w9DE06bK1qGjPC9wPg0KPGgzIGlkPQ=="2android座標系">2.Android座標系
Android中有兩種座標系,分別為Android座標系和視圖座標系,首先我們先來看看Android座標系。
在Android中,將螢幕的左上方的頂點作為Android座標系的原點,這個原點向右是X軸正方向,原點向下是Y軸正方向。
在下文講到的MotionEvent提供的getRawX()和getRawY()擷取的座標都是Android座標系的座標。
3.視圖座標系
要瞭解視圖座標系我們只需要看懂一張圖就可以了:
View擷取自身寬高getHeight():擷取View自身高度 getWidth():擷取View自身寬度
View自身座標
通過如下方法可以獲得View到其父控制項(ViewGroup)的距離:
getTop():擷取View自身頂邊到其父布局頂邊的距離 getLeft():擷取View自身左邊到其父布局左邊的距離 getRight():擷取View自身右邊到其父布局左邊的距離 getBottom():擷取View自身底邊到其父布局頂邊的距離
MotionEvent提供的方法
我們看那個深藍色的點,假設就是我們觸摸的點,我們知道無論是View還是ViewGroup,最終的點擊事件都會由onTouchEvent(MotionEvent event)方法來處理,MotionEvent也提供了各種擷取焦點座標的方法:
getX():擷取點擊事件距離控制項左邊的距離,即視圖座標 getY():擷取點擊事件距離控制項頂邊的距離,即視圖座標 getRawX():擷取點擊事件距離整個螢幕左邊距離,即絕對座標 getRawY():擷取點擊事件距離整個螢幕頂邊的的距離,即絕對座標