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

熱點內容
命令行執行vs編譯 瀏覽:95
印度電影巴基斯坦女孩跑印度 瀏覽:750
反編譯文件加殼了 瀏覽:668
PDF使用版 瀏覽:211
網路設計pdf 瀏覽:921
程序員身體健康 瀏覽:845
混日子程序員35歲 瀏覽:899
winxp重啟命令 瀏覽:535
快絲傳輸命令 瀏覽:771
菲律賓電影男主發現自己家能看到樓下 瀏覽:79
有什麼app可以測試自己適合的發型 瀏覽:16
美國電影長不大的女孩殺人30多歲 瀏覽:485
ccs如何編譯程序 瀏覽:555
你最懂電影網址 瀏覽:895
5000部日本必看的電影免費 瀏覽:652
香港經典三圾電影網扯 瀏覽:180
島國主角叫邁克的電影黑人 瀏覽:105
內核模塊調用命令 瀏覽:264
晴雅集哪個平台看 瀏覽:593
鍾真和徐錦江拍過的電影有哪些 瀏覽:759