View坐標(biāo)系


"學(xué)而不思則罔,思而不學(xué)則殆"
????????????????????????????????????????????????????????————孔子
???????Android View體系作為Android基礎(chǔ)知識(shí)里面比較基礎(chǔ)也比較核心的部分,其重要性不比四大組件差多少,從本篇開(kāi)始將開(kāi)始整理View的相關(guān)知識(shí),形成系列。本篇主要就View的坐標(biāo)做介紹,在后續(xù)的文章里還會(huì)涉及到事件的分發(fā)、View的繪制等內(nèi)容。

View簡(jiǎn)介

???????View是Android里面所有控件的基類,ViewGroup也是繼承自View,我們常用的控件都是繼承自View,掌握好View的相關(guān)知識(shí),對(duì)后面的界面開(kāi)發(fā)有很大幫助。View這一塊內(nèi)容,展示是基礎(chǔ),交互才是精髓,常見(jiàn)的有點(diǎn)擊、長(zhǎng)按、滑動(dòng)等交互事件,點(diǎn)擊、長(zhǎng)按比較簡(jiǎn)單,滑動(dòng)事件離不開(kāi)坐標(biāo)點(diǎn),下面就坐標(biāo)角度來(lái)分析一下。

安卓里的坐標(biāo)系和數(shù)學(xué)坐標(biāo)系的區(qū)別

???????說(shuō)到坐標(biāo)系,大家最熟悉的還是數(shù)學(xué)里面最常用到的坐標(biāo)系,如下圖。在數(shù)學(xué)坐標(biāo)系里面,坐標(biāo)軸向上是y軸正方向,向右是x軸正方向。


???????再來(lái)看看我們安卓里面的坐標(biāo)系,如下圖。和數(shù)學(xué)坐標(biāo)系還是有區(qū)別的,向右是x軸正方向,向下是y軸的正方向,相當(dāng)于數(shù)學(xué)坐標(biāo)系上下顛倒了一下,在后續(xù)的開(kāi)發(fā)里不要理解錯(cuò)了。

???????在手機(jī)屏幕上坐標(biāo)軸的體現(xiàn)為,如下圖。假如粉紅色區(qū)域?yàn)槭謾C(jī)屏幕,屏幕的左上角是坐標(biāo)系的原點(diǎn)(0,0),沿左邊向下為y軸正方向,沿頂邊向右為x軸正方向。

安卓里的坐標(biāo)系

???????Android坐標(biāo)系主要分為兩種:Android坐標(biāo)、視圖坐標(biāo)。
??????????????a、Android坐標(biāo):Android坐標(biāo)是以屏幕的左上角為原點(diǎn),水平向右為x正方向,垂直向下為y軸正方向。
??????????????b、視圖坐標(biāo):視圖坐標(biāo)和Android坐標(biāo)相似,也是從原點(diǎn)水平向右代表x正方向,垂直向下代表y正方向,但是原點(diǎn)不再是屏幕的坐上角,而是父View的左上角作為原點(diǎn),如下圖所示。

相對(duì)坐標(biāo)和絕對(duì)坐標(biāo)的區(qū)別

???????我們通過(guò)一幅圖來(lái)了解相對(duì)坐標(biāo)和絕對(duì)坐標(biāo)的區(qū)別。如下圖:


View獲取自己坐標(biāo)的事件:

???????getLeft():當(dāng)前View的左邊離父控件左邊的距離;
???????getTop():當(dāng)前View的頂邊離父控件頂邊的距離;
???????getRight():當(dāng)前View的右邊距父控件左邊的距離;
???????getBottom():當(dāng)前View的底邊距父控件的頂邊的距離;

View獲取自身寬高:

???????getWidth():當(dāng)前View自身的寬度;
???????getHeight():當(dāng)前View自身的高度;

MotionEvent獲取坐標(biāo):

???????getX():當(dāng)前觸摸點(diǎn)距當(dāng)前View的左邊的距離;
???????getY():當(dāng)前觸摸點(diǎn)距當(dāng)前View的頂邊的距離;
???????getRawX():當(dāng)前觸摸點(diǎn)距屏幕左邊的距離;
???????getRawY():當(dāng)前觸摸點(diǎn)距屏幕的頂邊的距離;

???????這里getX()、getY()獲取到的就是視圖坐標(biāo)的坐標(biāo)點(diǎn),getRawX()、getRawY()獲取到的就是Android坐標(biāo)的坐標(biāo)點(diǎn)。結(jié)合上圖和這些相關(guān)的事件,很輕易就可以理解這兩種坐標(biāo)了。

最后編輯于
?著作權(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)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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