Android View座標getLeft, getRight, getTop, getBottom解惑

來源:互聯網
上載者:User

摘要 1 引起疑惑 分析視圖invalidate流程的過程中發現view的left, right, top, bottom跟自己理解的不一樣,現在想分析一下這幾個值具體的含義。 2 理解座標,位置概念 這裡涉及座標系的概念: 座標系在二維視圖中通過X軸和Y軸兩個數字為組合表示某個點的絕對坐

1  引起疑惑

   分析視圖invalidate流程的過程中發現view的left, right, top, bottom跟自己理解的不一樣,現在想分析一下這幾個值具體的含義。

2  理解座標,位置概念

     這裡涉及座標系的概念:

座標系在二維視圖中通過X軸和Y軸兩個數字為組合表示某個點的絕對座標。
例如(30, 100) 通常表示X軸30, Y軸100交叉的一個點

   在Android中可以把left相當於X軸值, top相當於Y軸值, 通過這兩個值Android系統可以知道視圖的繪製起點,在通過Wdith 和 Height 可以得到視圖上下左右具體值,就可以在螢幕上絕對位置繪製視圖。right 與 bottom計算如下:

   right = left + width;

   bottom = top + height;

3 相應API

視圖左側位置  view.getLeft()

視圖右側位置 view.getRight()

視圖頂部位置 view.getTop();

視圖底部位置 view.getBottom();

視圖寬度 view.getWidth();

視圖高度 view.getHeight()

4  執行個體分析

按照我的理解:

藍色地區位置 left = 0,   top = 0         座標(0, 0 )

黃色地區位置 left = 60, top = 115    座標(60, 115)

綠色地區位置 left = 115, top = 170  座標(115, 170)  

綠色地區,這裡理解錯誤,我認為綠色地區的位置是針對於藍色地區的(0, 0)座標的值,從的右下角列印出的座標值就可以看出與下方我列出的值不一致,看看下面的圖就明白了

總結: 視圖的left , top , right , bottom 的值是針對其父視圖的相對位置, 綠色地區是針對其父視圖(即黃色地區為(0, 0)點)的座標,不應該是(115, 170 ) 而是 (55, 55)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.