我在屏幕上有一個圖像(ImageView)。圖像佔用大約一半的屏幕,這意味着您可以單擊圖像和圖像兩側的圖像。Android:如何獲取圖像/ ImageView中的xy座標?
當我點擊圖像時如何獲得屏幕上的x和y座標?
我嘗試過使用onTouchEvent,但只有當我點擊圖像之外時,纔會調用它,而不是當我單擊圖像時。
問候, 馬蒂亞斯
我在屏幕上有一個圖像(ImageView)。圖像佔用大約一半的屏幕,這意味着您可以單擊圖像和圖像兩側的圖像。Android:如何獲取圖像/ ImageView中的xy座標?
當我點擊圖像時如何獲得屏幕上的x和y座標?
我嘗試過使用onTouchEvent,但只有當我點擊圖像之外時,纔會調用它,而不是當我單擊圖像時。
問候, 馬蒂亞斯
使用OnClickListener上的ImageView接收click事件,或抽象您從ImageView的類和覆蓋功能「公共無效onTouch(MotionEvent EVT)」來獲取X/Y的座標這個觀點。
我最終沒有在ImageView上設置任何OnClickListener。相反,我只實現了public void onTouch(MotionEvent事件是這樣的: – Mattias 2012-01-18 14:03:51
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
int[] values = new int[2];
view.getLocationOnScreen(values);
Log.d("X & Y",values[0]+" "+values[1]);
}
});
而且,我的this answer將是有用的。
)好像我只在屏幕上獲取圖像的位置。無論圖像中的哪個位置,我都會返回(0,205)(這是位置 – Mattias 2012-01-18 13:36:19
如何獲取座標,但在點擊事件之外,因爲我得到0。 – nikolakoco 2013-01-26 19:05:16
我最終沒有在ImageView上設置任何OnClickListener。相反,我只是執行「公共無效onTouch(MotionEvent事件)」和「公共無效onWindowFocusChanged(布爾hasFocus)」是這樣的:
private int fieldImgXY[] = new int[2];
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
// Use onWindowFocusChanged to get the placement of
// the image because we have to wait until the image
// has actually been placed on the screen before we
// get the coordinates. That makes it impossible to
// do in onCreate, that would just give us (0, 0).
fieldImage.getLocationOnScreen(fieldImgXY);
Log.i(LOG_TAG, "fieldImage lockation on screen: " +
xyString(fieldImgXY[0], fieldImgXY[1]));
}
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Log.i(LOG_TAG, "touch event - down");
int eventX = (int) event.getX();
int eventY = (int) event.getY();
Log.i(LOG_TAG, "event (x, y) = " + xyString(eventX, eventY));
int xOnField = eventX - fieldImgXY[0];
int yOnField = eventY - fieldImgXY[1];
Log.i(LOG_TAG, "on field (x, y) = " + xyString(xOnField, yOnField));
}
return super.onTouchEvent(event);
}
您可以發佈xyString()方法嗎? – Manikandan 2012-04-20 14:27:33
應用程序FC聲明'x必須是<= bitmap.getWidth()'http://stackoverflow.com/questions/21347431/app-is-fc-if-the-user-presses-too-much-to-left-or-right – Si8 2014-01-25 23:09:19
@Manikandan:I認爲它應該是這樣的: public String xyString(int x,int y){ return「X:」+ String.valueOf(x)+「Y:」+ String.valueOf(y); } – EdgarT 2014-03-18 01:20:52
imageview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
}
return false;
}
});
我解決了這個問題,但我不能提交答案,我自己由於這個網站的政策問題還有6個小時的問題。我稍後會發布解決方案。 – Mattias 2012-01-18 14:10:21