前言
Android View體系是界面編程的核心,他的重要性不亞于Android四大組件,在這個系列中我會陸續講到View坐標系、View的滑動、View的事件分發等文章來逐步介紹Android View體系。
1.View簡介
View是Android所有控件的基類,同時ViewGroup也是繼承自View,看下面這張圖我們就會有一個直觀的了解:
這里寫圖片描述
知道了View的層級關系有助于對View的理解,從上圖可以發現我們常用的這些控件都是繼承于View,如果我們更好的掌握了View的知識體系,那么我們在界面編程時則會更加的得心應手。
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():獲取點擊事件距離整個屏幕頂邊的的距離,即絕對坐標