您好,登錄后才能下訂單哦!
1. Android坐標(biāo)系
在Android中,將屏幕的最左上角頂點(diǎn)作為Android坐標(biāo)系的原點(diǎn)
從原點(diǎn)向右是X軸的正方向,從原點(diǎn)向下是Y軸的正方向
View提供了getLocationOnScreen( int[] location)方法來獲取在整個屏幕內(nèi)的絕對坐標(biāo),該坐標(biāo)值為View左上角的坐標(biāo)。注意該View的坐標(biāo)值是從屏幕左上角開始獲取的,所以也包括了通知欄的高度
該方法的具體實(shí)現(xiàn)
/** * <p>Computes the coordinates of this view on the screen. The argument * must be an array of two integers. After the method returns, the array * contains the x and y location in that order.</p> * * @param location an array of two integers in which to hold the coordinates */ public void getLocationOnScreen(@Size(2) int[] location) { getLocationInWindow(location); final AttachInfo info = mAttachInfo; if (info != null) { location[0] += info.mWindowLeft; location[1] += info.mWindowTop; } }
可看到,傳入的int[]數(shù)組中,location[0]代表的是X軸坐標(biāo),location[1]代表的Y軸坐標(biāo)
這里還有個getLocationInWindow方法,作用是獲取View在當(dāng)前窗口內(nèi)的絕對坐標(biāo)
我們在通過MotionEvent類中的getRawX(),getRawY()方法獲取的坐標(biāo)同樣也屬于這種Android坐標(biāo)系里的坐標(biāo)
2. 視圖坐標(biāo)系
Android中的視圖坐標(biāo)系,描述的是子視圖與其父視圖中的位置關(guān)系
和Android坐標(biāo)系一樣,視圖坐標(biāo)系也是以原點(diǎn)向右為X軸正方向,以原點(diǎn)向下為Y軸正方向,與Android坐標(biāo)系不同的是,視圖坐標(biāo)系的原點(diǎn)是以父視圖左上角的位置為原點(diǎn)
如上圖中,對于Button來說,父視圖LinearLayout左上角就是視圖坐標(biāo)系的原點(diǎn)(0,0)
我們通過MotionEvent類中的getX()、getY()方法所獲得的就是視圖坐標(biāo)系的坐標(biāo)
在Android中,系統(tǒng)提供了很多獲取坐標(biāo)值、相對距離等方法
View提供的API
•getTop():獲取View頂邊到其父布局頂邊的距離
•getLeft():獲取View左邊到其父布局左邊的距離
•getRight():獲取View右邊到其父布局左邊的距離
•getBottom():獲取View底邊到其父布局頂邊的距離
MotionEvent提供的API
• getX():獲取點(diǎn)擊位置離View左邊的距離
• getY():獲取點(diǎn)擊位置離View頂邊的距離
• getRawX():獲取點(diǎn)擊位置離屏幕左邊的距離
• getRawY():獲取點(diǎn)擊位置離屏幕頂邊的距離
以上這篇Android 坐標(biāo)系與視圖坐標(biāo)系圖解分析就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。