我试图在Touch of Image上获得x,y坐标,并且我想要执行一些操作。所以,任何人都可以告诉我如何触摸图像的x,y坐标。在此先感谢。
我的代码 -
public class MovableObject extends ImageView implements OnTouchListener{
Bitmap myBmp;
Paint myPaint = new Paint();
int MoveX = 0;
public MovableObject(Context context,int moveObject,Bitmap myBmp) {
super(context);
super.setClickable(true);
this.myBmp = myBmp;
myPaint.setColor(Color.WHITE);
this.MoveX = moveObject;
setOnTouchListener(this);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(myBmp, MoveX, 100, myPaint);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
System.out.println("down...."+event.getX()+" "+event.getY());
case MotionEvent.ACTION_MOVE:
}
return true;
}
}
通过这个我得到了我点击的x,y坐标,但是当我点击我的图像时,我想得到x,y。
答案 0 :(得分:6)
MoveX - 它是你视图的起始坐标。
MoveY - 这是你观点的起始坐标 imgHeiht - 这是 图像的高度;
imgWidth - 它是图像的宽度;event.getX() - 这是你X坐标的实际位置。
event.getY() - 这是你Y坐标的实际位置。
if(MoveX <= event.getX() && event.getX()<= (MoveX+imgWidth) && (MoveY <= event.getY() && (event.getY() <= MoveY+imgHeight))){
System.out.println("down...."+event.getX()+" "+event.getY());
}
这可能会对你有帮助。
答案 1 :(得分:2)
我找到了另一种方式,我认为这是使用Rect
检测任何视图的触摸的最佳方式我刚刚创建了一个返回Rect实例的方法,包括视图的所有四个坐标
private Rect getLocationOnScreen(View mView) {
Rect mRect = new Rect();
int[] location = new int[2];
mView.getLocationOnScreen(location);
mRect.left = location[0];
mRect.top = location[1];
mRect.right = location[0] + mView.getWidth();
mRect.bottom = location[1] + mView.getHeight();
return mRect;
}
然后只需覆盖您的活动中的onTouchEvent(MotionEvent event)
,并检查您要检测的任何视图的坐标是否被触及,
@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
if (event.getAction() == MotionEvent.ACTION_DOWN &&
getLocationOnScreen(imageview).contains(x, y)) {
Toast.makeText(getApplicationContext(),
"ImageView Touched", Toast.LENGTH_LONG).show();
}
return super.onTouchEvent(event);
}
答案 2 :(得分:0)
这些是您可以从图像视图调用的一些方法,假设您有这个图像。尝试尝试,你得到你需要的东西。
ImageView iv;
iv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
event.getX();
event.getX(pointerIndex)
event.getXPrecision()
return true;
}
});
答案 3 :(得分:0)
试试这个..
ImageView.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
float x = event.getX();
float y = event.getY();
}
return true;
}
}
答案 4 :(得分:0)
你无法直接获取图像坐标,当你绘制图像时,你可以在屏幕上获得图像区域,然后你可以使用@CapDroid方法来获取图像坐标