Java 触摸点XY与画布的XY不同?

Java 触摸点XY与画布的XY不同?,java,android,android-layout,android-canvas,Java,Android,Android Layout,Android Canvas,我在画布上画了一个矩形,比如说插入点(5,5)。问题是当我点击它时,接触点是(60,85)。我知道触摸点取自整个屏幕,矩形点仅取自视图部分,但差异仍然很大 我试图将图像视图top()和left()从屏幕大小中减去,但仍然无法工作 我尝试的另一个解决方案是将ImageView的martix倒置,然后检查坐标,但结果仍然是一样的 以下是我的另一种方法,但仍然不起作用: @Override protected void onCreate(Bundle savedInstanceState) {

我在画布上画了一个矩形,比如说插入点(5,5)。问题是当我点击它时,接触点是(60,85)。我知道触摸点取自整个屏幕,矩形点仅取自视图部分,但差异仍然很大

我试图将
图像视图
top()
left()
从屏幕大小中减去,但仍然无法工作

我尝试的另一个解决方案是将
ImageView
的martix倒置,然后检查坐标,但结果仍然是一样的

以下是我的另一种方法,但仍然不起作用:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageView DrawingImage = (ImageView) this.findViewById(R.id.image2);

    Bitmap bitmap2 = Bitmap.createBitmap((int) getWindowManager()
        .getDefaultDisplay().getWidth(), (int) getWindowManager()
        .getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);

   canvas.setBitmap(bitmap2);
    DrawingImage.setImageBitmap(bitmap2);

    // Draw Rectangle

    Paint paint = new Paint();
    paint.setColor(Color.GREEN);
    paint.setStyle(Paint.Style.FILL);

    Point insertRec=new Point(5, 110);
    rec.set(insertRec.x, insertRec.y, insertRec.x+25, insertRec.y+20);
    canvas.drawRect(rec,paint);
    image = (ImageView) findViewById(R.id.image);
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test);
    image.setImageBitmap(bitmap);
    imageX=image.getWidth();
    imageY=image.getHeight();
}
@SuppressWarnings("unused")
@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub

    if(event.getAction() == MotionEvent.ACTION_DOWN) {
        int x=(int) event.getRawX(); 
        int y=(int) event.getRawY();

        final int index = event.getActionIndex();
        final float[] coords = new float[] { event.getX(index), event.getY(index) };
        Matrix matrix = new Matrix();
        image.getImageMatrix().invert(matrix);
        matrix.postTranslate(image.getScrollX(), image.getScrollY());
        matrix.mapPoints(coords);
        int[] arr = new int[2];

        image.getLocationInWindow(arr);

        int xx=rec.centerX();
        int yy=rec.centerY();

        if(rec.contains(x - arr[0], y - arr[1])){
            Toast.makeText(this, "You pressed a port!!!!!!!!!", Toast.LENGTH_LONG).show();
        }

    }
有人能帮我吗

提前谢谢你


最好的问候,Dimitar Georgiev

为什么不在ImageView中添加一个onTouchListener?坐标将是正确的。我仍然是新的,我真的不知道怎么做。我必须使图片可点击?
DrawingImage.setOnTouchListener(新OnTouchListener(){@Override public boolean onTouch(View v,MotionEvent event){//TODO自动生成的方法存根返回false;})不幸的是,它有相同的结果,或者我没有正确地实现它