導航:首頁 > 操作系統 > android獲取相對坐標

android獲取相對坐標

發布時間:2023-06-06 12:38:25

android怎麼獲取bitmap左上角坐標

用ImageView來裝載這個bitmap並且填滿整個ImageView,再用imageview對象來獲取坐標值,getX(),getY(),獲取的就是左上角的坐標值

⑵ android中獲得控制項的位置(相對於布局文件)

正確的代碼如下所示

java">TextViewtv=(TextView)findViewById(R.id.text);
tv.getViewTreeObserver().addOnGlobalLayoutListener(newOnGlobalLayoutListener(){
@Override
publicvoidonGlobalLayout(){
//這里執行獲取位置大小操作
intleft=tv.getLeft();
inttop=tv.getTop();
intbottom=tv.getBottom();
intright=tv.getRight();
//tv相對於父布局的坐標就得出來了

}
}

view的位置和大小是通過onLayout和onMeasure方法計算出來的,執行到activity的onCreate()方法時,尚未開始計算控制項的大小和位置,所以是取不到的

OnGlobalLayoutListener 是ViewTreeObserver的內部類,當一個視圖樹的布局發生改變時,可以被ViewTreeObserver監聽到,這是一個注冊監聽視圖樹的觀察者(observer),在視圖樹的全局事件改變時得到通知

除了OnGlobalLayoutListener ,ViewTreeObserver還有如下內部類:


interfaceViewTreeObserver.OnGlobalFocusChangeListener

當在一個視圖樹中的焦點狀態發生改變時,所要調用的回調函數的介面類


interfaceViewTreeObserver.OnGlobalLayoutListener

當在一個視圖樹中全局布局發生改變或者視圖樹中的某個視圖的可視狀態發生改變時,所要調用的回調函數的介面類


interfaceViewTreeObserver.OnPreDrawListener

當一個視圖樹將要繪制時,所要調用的回調函數的介面類


interfaceViewTreeObserver.OnScrollChangedListener

當一個視圖樹中的一些組件發生滾動時,所要調用的回調函數的介面類


interfaceViewTreeObserver.OnTouchModeChangeListener

當一個視圖樹的觸摸模式發生改變時,所要調用的回調函數的介面類

⑶ android View坐標系:getX/getTranslation/getLeft

圖中灰色矩形是320X480屏幕區域,綠色矩形是300X300的父View,實線黃色矩形是100X100的子View,虛線黃色矩形是實線矩形setTranslationX(100)/setTranslationY(100)之後的位置。

以下如無特別說明,所有的方法說明均是以實線黃色矩形作為參照。
getX()/getY()獲取的是其左上角相對於父View(綠色矩形)的左上角坐標位置,圖中getX()=100,getY()=100。

getTranslationX/Y獲取的是當前View相對於其當前位置的偏移,向左為負值,向右為正值,因此對於實線黃色矩形來說getTranslationX()=0,getTranslationY()=0,而對於虛線黃色矩形來說getTranslationX()=100,getTranslationY()=100,translationX = getX()-getLeft(),修改translationX/Y的值,會導致getX/Y的變化。但是,如果修改X/Y的值並不會導致translationX/Y的變化,他們的值依然是0。

getLeft/Right/Top/Bottom,獲取的是View相對於父View左側/頂部的距離,圖中實線黃色矩形的getLeft()=100,getRight()=200(紅色線標識所示),getTop()=100,getBottom()=200(紫色線標識所示),該系列方法嚴格來講控制的是View的尺寸而不是位置,因此在setX或者setTranslationX時雖然改變了View的位置,但是其Left/Right/Top/Bottom參數卻沒有改變。因此對於圖中的虛線黃色矩形,getLeft/Right/Top/Bottom獲取到的值依然是100/200/100/200,如果通過setLeft(0),setTop(0)方法將實線黃色矩形的left和top值修改為0,則該矩形的左上角會與父View(綠色矩形)的左上角重合,而該矩形的右下角不變,同時getLeft()=0,getTop()=0,getRight()=200,getTop()=200,getX()=0,getY()=0,getTranslationX()=0,getTranslationY()=0。

閱讀全文

與android獲取相對坐標相關的資料

熱點內容
伺服器如何確認有沒有裝系統 瀏覽:490
匯編語言debugg命令 瀏覽:491
買菜app的菜怎麼來的 瀏覽:174
51單片機如何自檢 瀏覽:80
單片機用延時來實現pwm 瀏覽:739
php在線問卷調查 瀏覽:2
java字元串填充 瀏覽:612
c嵌入式編程設計式pdf 瀏覽:791
如何讓安卓手機定時播放音樂 瀏覽:624
學霸教你學cpa什麼app 瀏覽:870
iso系統文件夾最多多大 瀏覽:441
java線程啟動方法是 瀏覽:571
亞洲文件夾 瀏覽:375
python執行linux命令 瀏覽:324
單片機消毒櫃 瀏覽:888
企業伺服器如何選 瀏覽:717
java選課管理 瀏覽:91
程序員疲勞圖片 瀏覽:40
曼哈頓距離和歐式距離python 瀏覽:274
程序員軟考高級哪個好考 瀏覽:309