2011-04-18 29 views
3

得到位圖像素,我上ImageView的顯示位圖。當點擊ImageView時,我想獲取點擊它的位圖的像素x/y座標。我已經註冊了ImageView的onTouchListener,並且在onTouch方法中,我使用getX和getY來獲取觸摸的位置。問題是ImageView中的圖像可能比視圖本身大,所以它會縮小以適應屏幕。返回的x和y座標是視圖的座標,但不一定是位圖上相應像素的座標。試圖從的ImageView onTouchListener

我能得到某種比例因子就知道它是多少大小?或者,如果沒有,有人可以建議我怎樣才能獲得我需要的信息?最重要的是我可以獲得像素座標 - 如果必須更改視圖類型,那沒問題。

此外,有時該位圖是小於屏幕,所以它擴展它。在這種情況下,從MotionEvent收到的x和y可能超出實際位圖的範圍。

回答

0

檢查到scaleType屬性。您必須根據getScaleType()的結果對原始圖像進行數學運算,但值得一試。

+0

與ScaleType的問題是,它只是返回它們使用用於縮放,不是其被縮放的實際比率的方法。 – Eighty 2011-04-18 04:48:04

0

我可以在相同的情況下。線程已超過一年,但認爲它可能對某人有用。在設置到ImageView之前,我必須縮放位圖。

下面是代碼:

//Convert Uri to Bitmap 
inputBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage); 

//Scale the bitmap to fit in the ImageView 
Bitmap bmpScaled = Bitmap.createScaledBitmap(inputBitmap, img.getWidth(), img.getHeight(),true); 

//Set the scaled bitmap to the ImageView 
img.setImageBitmap(bmpScaled); 

在此之後,觸摸的座標是相同的位圖的座標。

相關問題