getGlobalVisibleRect() 與 getLocalVisibleRect()

1. 講解這兩個(gè)方法之前, 首先我們先看下一個(gè)圖片, 只是一個(gè)簡(jiǎn)單的Activity, 一個(gè)Linearlayout(背景為紅色) 里面放了一個(gè)正方形(背景為藍(lán)色)

并且邊距已經(jīng)標(biāo)出.

2.? 接下來我們看這兩個(gè)方法獲得的值(背景為藍(lán)色 View 的矩形框)

//Kotlin code

var globalVisibleRect = Rect()

testVisiblty.getGlobalVisibleRect(globalVisibleRect)

var localVisibleRect = Rect()

testVisiblty.getLocalVisibleRect(localVisibleRect);

Log.d("MainActivity", "test globalVisibleRect::" + globalVisibleRect)

Log.d("MainActivity", "test localVisibleRect::" + localVisibleRect)

3.? 查看log輸出

02-26 07:00:31.361 9716 9716 D MainActivity: test globalVisibleRect::Rect(150, 150 - 750, 750)

可以看出這個(gè)坐標(biāo)的獲得是想對(duì)于屏幕左上角的坐標(biāo). (矩形左上角距離屏幕頂端的距離是150[left], 150[top]), 右下角距離屏幕的距離

是Right = [Left+600px] = 750, 同理Bottom 是一樣的

02-26 07:00:31.362? 9716? 9716 D MainActivity: test localVisibleRect::Rect(0, 0 - 600, 600)

可以看出這個(gè)坐標(biāo)的獲得是想對(duì)于自身的坐標(biāo).(矩形左上角距離自己的距離為0,0) 同理右下角距離左上角的距離為(600,600)

4.? 從上面來看, 沒有什么啊, 就是一個(gè)普通的坐標(biāo),一個(gè)相對(duì)于屏幕左上角, 一個(gè)是想對(duì)于自己的左上角. OK .現(xiàn)在我們改變藍(lán)色矩形框的位置, 看如下圖。把藍(lán)色矩形框位置向左邊偏移450px(150dp)


查看log輸出:

02-26 10:15:38.114 12203 12203 D MainActivity: test globalVisibleRect::Rect(150, 150 - 300, 750)

這個(gè)很好理解了. 矩形左上角距離屏幕頂端的距離是(150, 150) 右下角距離屏幕頂端的距離是(300, 750)

02-26 10:15:38.114 12203 12203 D MainActivity: test localVisibleRect::Rect(450, 0 - 600, 600)

但是這個(gè)坐標(biāo)怎么理解???

首先我們要明白這個(gè)藍(lán)色矩形是一個(gè)600x600的矩形, 而我們向左移動(dòng)了450px, 那么現(xiàn)在可以看到的是150x600, 這個(gè)時(shí)候可見區(qū)域的頂點(diǎn)

坐標(biāo)相對(duì)于原圖形的600x600來說是距離原圖形的左上角距離是450px, 同理600也是.

總結(jié):

getGlobalVisibleRect() 是view可見區(qū)域相對(duì)與屏幕來說的坐標(biāo)位置.

getLocalVisibleRect()是view可見區(qū)域想對(duì)于自己坐標(biāo)的位置.

一定要記清楚是可見區(qū)域.

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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