溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android 坐標(biāo)系與視圖坐標(biāo)系圖解分析

發(fā)布時(shí)間:2020-10-25 19:21:52 來源:腳本之家 閱讀:526 作者:jingxian 欄目:移動開發(fā)

1. Android坐標(biāo)系

在Android中,將屏幕的最左上角頂點(diǎn)作為Android坐標(biāo)系的原點(diǎn)

Android 坐標(biāo)系與視圖坐標(biāo)系圖解分析

從原點(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)

Android 坐標(biāo)系與視圖坐標(biāo)系圖解分析

如上圖中,對于Button來說,父視圖LinearLayout左上角就是視圖坐標(biāo)系的原點(diǎn)(0,0)

我們通過MotionEvent類中的getX()、getY()方法所獲得的就是視圖坐標(biāo)系的坐標(biāo)

在Android中,系統(tǒng)提供了很多獲取坐標(biāo)值、相對距離等方法

Android 坐標(biāo)系與視圖坐標(biāo)系圖解分析

View提供的API

•getTop():獲取View頂邊到其父布局頂邊的距離

•getLeft():獲取View左邊到其父布局左邊的距離

•getRight():獲取View右邊到其父布局左邊的距離

•getBottom():獲取View底邊到其父布局頂邊的距離

MotionEvent提供的API

Android 坐標(biāo)系與視圖坐標(biāo)系圖解分析

• getX():獲取點(diǎn)擊位置離View左邊的距離

• getY():獲取點(diǎn)擊位置離View頂邊的距離

• getRawX():獲取點(diǎn)擊位置離屏幕左邊的距離

• getRawY():獲取點(diǎn)擊位置離屏幕頂邊的距離

以上這篇Android 坐標(biāo)系與視圖坐標(biāo)系圖解分析就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(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)容。

AI