導航:首頁 > 操作系統 > 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獲取相對坐標相關的資料

熱點內容
資料庫查詢系統源碼 瀏覽:617
php5314 瀏覽:358
完美國際安裝到哪個文件夾 瀏覽:668
什麼app可以掃一掃做題 瀏覽:539
程序員編碼論壇 瀏覽:923
淘點是什麼app 瀏覽:659
中國高等植物pdf 瀏覽:453
51單片機時間 瀏覽:182
後台如何獲取伺服器ip 瀏覽:267
單片機流水燈程序c語言 瀏覽:234
程序員第二職業掙錢 瀏覽:239
運行里怎麼輸入伺服器路徑 瀏覽:840
pythonstepwise 瀏覽:509
劉一男詞彙速記指南pdf 瀏覽:64
php認證級別 瀏覽:368
方舟編譯啥時候推送 瀏覽:1011
php手機驗證碼生成 瀏覽:675
哲學思維pdf 瀏覽:14
凌達壓縮機有限公司招聘 瀏覽:534
weblogic命令部署 瀏覽:38