Android中View的getX,getY...

Android坐標(biāo)系的理解直接關(guān)系到后面你Android進(jìn)階部分的學(xué)習(xí),如果沒(méi)有夯實(shí)的基礎(chǔ),你自定義View時(shí)就會(huì)有種欲求不滿(mǎn),欲罷不能——想搞懂卻又覺(jué)得難,想放棄又覺(jué)得舍不得。
Android中的坐標(biāo)系以及獲取坐標(biāo)的方法
Android中有兩種坐標(biāo)系,分別稱(chēng)之為Android坐標(biāo)系和視圖坐標(biāo)系。而對(duì)應(yīng)的也有一些相關(guān)的方法可以獲取坐標(biāo)系中的坐標(biāo)值。只有搞清楚這些區(qū)別,才能在實(shí)現(xiàn)的時(shí)候不至于出錯(cuò)或者得不到你想要的效果。
一、Android坐標(biāo)系和視圖坐標(biāo)系
(1)Android坐標(biāo)系
先來(lái)看一看Android坐標(biāo)系是個(gè)什么樣子的。貼一張圖來(lái)說(shuō)明,如下:

 如上圖所示,Android坐標(biāo)系以手機(jī)屏幕左上角的頂點(diǎn)為坐標(biāo)原點(diǎn),從該點(diǎn)向右為x軸正方向,從該點(diǎn)向下為y軸正方向。而觸控事件中,使用getRawX()和getRawY()方法

獲取的坐標(biāo)就是以這個(gè)坐標(biāo)系為標(biāo)準(zhǔn)下的坐標(biāo)值。
(2)視圖坐標(biāo)系
android中的另外一個(gè)坐標(biāo)系叫做視圖坐標(biāo)系,它描述的是子視圖在父視圖中的位置。再貼一張圖來(lái)說(shuō)明,如下:


  如上圖所示,視圖坐標(biāo)系是以父視圖的左上角為坐標(biāo)原點(diǎn)的。相應(yīng)的原點(diǎn)向右為x軸正方向,原點(diǎn)向下為y軸正方向。在觸控中,通過(guò)

getX()和getY()來(lái)獲取的坐標(biāo)值就是視圖坐標(biāo)系中的坐標(biāo)值。

二、獲取坐標(biāo)值以及相對(duì)距離的那些方法
在android中,提供了非常豐富的方法來(lái)獲得坐標(biāo)值和相對(duì)距離。但是在使用這些方法的時(shí)候,一定要清楚是以哪個(gè)坐標(biāo)系為標(biāo)準(zhǔn)來(lái)獲取的。
為了將這些方法一一說(shuō)明清楚,我也準(zhǔn)備了一張圖,如下:



上面的那張圖很好的說(shuō)明了每個(gè)方法獲得的坐標(biāo)值或者距離都是從哪里到哪里的。說(shuō)明一下,圖中有三個(gè)黑色的框框,最外層的是手機(jī)屏幕,
中間層的是ViewGroup,最內(nèi)層的是ViewGroup中放置的view。
其實(shí)上圖中標(biāo)注的方法可以分為兩類(lèi),一類(lèi)是View提供的方法,一類(lèi)是MotionEvent提供的方法。分別說(shuō)明如下:
View提供的獲取的坐標(biāo)以及距離的方法:
getTop() 獲取到的是view自身的頂邊到其父布局頂邊的距離
getLeft() 獲取到的是view自身的左邊到其父布局左邊的距離
getRight() 獲取到的是view自身的右邊到其父布局左邊的距離
getBottom() 獲取到的是view自身底邊到其父布局頂邊的距離

MotionEvent提供的方法:
getX() 獲取點(diǎn)擊事件距離控件左邊的距離,即視圖坐標(biāo)
getY() 獲取點(diǎn)擊事件距離控件頂邊的距離,即視圖坐標(biāo)
getRawX() 獲取到的是點(diǎn)擊事件距離整個(gè)屏幕左邊的距離,即絕對(duì)坐標(biāo)
getRawY() 獲取到的是點(diǎn)擊事件距離整個(gè)屏幕頂邊的距離,即絕對(duì)坐標(biāo)
getScrollY() 獲取 視圖坐標(biāo)原點(diǎn) 到 視圖 滾出屏幕 的距離
getScrollX() 類(lèi)似 同上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容