前言
Android View體系是界面編程的核心,他的重要性不亞于Android四大組件,在這個(gè)系列中我會(huì)陸續(xù)講到View坐標(biāo)系、View的滑動(dòng)扔枫、View的事件分發(fā)等文章來逐步介紹Android View體系。
1.View簡(jiǎn)介
View是Android所有控件的基類于置,同時(shí)ViewGroup也是繼承自View,看下面這張圖我們就會(huì)有一個(gè)直觀的了解:
知道了View的層級(jí)關(guān)系有助于對(duì)View的理解,從上圖可以發(fā)現(xiàn)我們常用的這些控件都是繼承于View八毯,如果我們更好的掌握了View的知識(shí)體系搓侄,那么我們?cè)诮缑婢幊虝r(shí)則會(huì)更加的得心應(yīng)手。
2.Android坐標(biāo)系
Android中有兩種坐標(biāo)系话速,分別為Android坐標(biāo)系和視圖坐標(biāo)系讶踪,首先我們先來看看Android坐標(biāo)系。 在Android中泊交,將屏幕的左上角的頂點(diǎn)作為Android坐標(biāo)系的原點(diǎn)乳讥,這個(gè)原點(diǎn)向右是X軸正方向,原點(diǎn)向下是Y軸正方向廓俭。
在下文講到的MotionEvent提供的getRawX()和getRawY()獲取的坐標(biāo)都是Android坐標(biāo)系的坐標(biāo)云石。
3.視圖坐標(biāo)系
要了解視圖坐標(biāo)系我們只需要看懂一張圖就可以了:
View獲取自身寬高
getHeight():獲取View自身高度
getWidth():獲取View自身寬度
View自身坐標(biāo)
通過如下方法可以獲得View到其父控件(ViewGroup)的距離:
getTop():獲取View自身頂邊到其父布局頂邊的距離
getLeft():獲取View自身左邊到其父布局左邊的距離
getRight():獲取View自身右邊到其父布局左邊的距離
getBottom():獲取View自身底邊到其父布局頂邊的距離
MotionEvent提供的方法
我們看上圖那個(gè)深藍(lán)色的點(diǎn)番枚,假設(shè)就是我們觸摸的點(diǎn)讯蒲,我們知道無論是View還是ViewGroup,最終的點(diǎn)擊事件都會(huì)由onTouchEvent(MotionEvent event)方法來處理制恍,MotionEvent也提供了各種獲取焦點(diǎn)坐標(biāo)的方法:
getX():獲取點(diǎn)擊事件距離控件左邊的距離雹熬,即視圖坐標(biāo)
getY():獲取點(diǎn)擊事件距離控件頂邊的距離宽菜,即視圖坐標(biāo)
getRawX():獲取點(diǎn)擊事件距離整個(gè)屏幕左邊距離,即絕對(duì)坐標(biāo)
getRawY():獲取點(diǎn)擊事件距離整個(gè)屏幕頂邊的的距離竿报,即絕對(duì)坐標(biāo)