第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何獲取視圖的絕對(duì)坐標(biāo)

如何獲取視圖的絕對(duì)坐標(biāo)

郎朗坤 2019-07-29 11:16:33
如何獲取視圖的絕對(duì)坐標(biāo)我正在嘗試獲取視圖左上角的絕對(duì)屏幕像素坐標(biāo)。但是,我可以找到的所有方法,例如getLeft()并且getRight()不起作用,因?yàn)樗鼈兯坪醵枷鄬?duì)于視圖的父級(jí),因此給了我0。這樣做的正確方法是什么?如果它有幫助,這是為了“讓圖片重新整理”游戲。我希望用戶(hù)能夠繪制一個(gè)框來(lái)選擇多個(gè)部分。我的假設(shè)是,做到這一點(diǎn)的最簡(jiǎn)單方法是getRawX(),并getRawY()從MotionEvent再兌布局保持件的左上角比較這些值。知道了件的大小,我就可以確定已經(jīng)選擇了多少件。我知道我可以使用getX()和getY()上MotionEvent,而是作為一個(gè)返回相對(duì)位置,使得確定哪個(gè)被選擇件更困難。(我知道,這并非不可能,但似乎不必要地復(fù)雜化)。編輯:這是我用來(lái)嘗試獲取保持容器大小的代碼,根據(jù)其中一個(gè)問(wèn)題。TableLayout是包含所有拼圖的表。TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);Log.d(LOG_TAG, "Values " + tableLayout.getTop() + tableLayout.getLeft());編輯2:這是我嘗試過(guò)的代碼,遵循更多建議的答案。public int[] tableLayoutCorners = new int[2];(...)TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);tableLayout.requestLayout();Rect corners = new Rect();tableLayout.getLocalVisibleRect(corners);Log.d(LOG_TAG, "Top left " + corners.top + ", " + corners.left + ", " + corners.right            + ", " + corners.bottom);cells[4].getLocationOnScreen(tableLayoutCorners);Log.d(LOG_TAG, "Values " + tableLayoutCorners[0] + ", " + tableLayoutCorners[1]);所有初始化完成后添加此代碼。圖像被分成一個(gè)包含在a中的ImageViews(cells []數(shù)組)數(shù)組TableLayout。單元格[0]是左上角ImageView,我選擇了單元格[4],因?yàn)樗挥谥虚g的某個(gè)位置,絕對(duì)不應(yīng)該有(0,0)的坐標(biāo)。上面顯示的代碼仍然給我在日志中的所有0,我真的不明白,因?yàn)楦鞣N拼圖正確顯示。(我為tableLayoutCorners和默認(rèn)可見(jiàn)性嘗試了public int,兩者都給出了相同的結(jié)果。)我不知道這是否重要,但I(xiàn)mageViews最初沒(méi)有給出尺寸。ImageView當(dāng)我給它一個(gè)要顯示的圖像時(shí),視圖自動(dòng)初始化時(shí)確定s 的大小。這可能會(huì)導(dǎo)致它們的值為0,即使這些日志代碼是在它們被賦予圖像并自動(dòng)調(diào)整大小之后嗎?為了解決這個(gè)問(wèn)題,我添加了tableLayout.requestLayout()如上所示的代碼,但這沒(méi)有幫助。
查看完整描述

3 回答

?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

查看完整回答
反對(duì) 回復(fù) 2019-07-29
?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

接受的答案實(shí)際上沒(méi)有說(shuō)明如何獲得位置,所以這里有更多細(xì)節(jié)。傳入int長(zhǎng)度為2 的數(shù)組,并將值替換為視圖的(x,y)坐標(biāo)(頂部,左上角)。

int[] location = new int[2];myView.getLocationOnScreen(location);int x = location[0];int y = location[1];

筆記

  • 更換getLocationOnScreengetLocationInWindow應(yīng)該給在大多數(shù)情況下,相同的結(jié)果(見(jiàn)這個(gè)答案)。但是,如果您在像Dialog或自定義鍵盤(pán)這樣的較小窗口中,那么您需要選擇哪一個(gè)更適合您的需求。

  • (0,0)如果您調(diào)用此方法,則會(huì)得到,onCreate因?yàn)橐晥D尚未布局。您可以使用a ViewTreeObserver來(lái)監(jiān)聽(tīng)布局完成后您可以獲得測(cè)量的坐標(biāo)。(見(jiàn)這個(gè)答案。)


查看完整回答
反對(duì) 回復(fù) 2019-07-29
  • 3 回答
  • 0 關(guān)注
  • 622 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)