Android:如何获取图像/ ImageView中的xy坐标?
我在屏幕上有一个图像(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必须是 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