0

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

我试图从屏幕尺寸中取出ImageView top()left()减去它,但仍然无法正常工作。

我尝试的另一种解决方案是采用 invert martixImageView并检查坐标,但结果仍然相同。

这是我的另一种方法,但仍然无法正常工作:

@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();
        }

    }

有人能帮助我吗?

先感谢您!

最好的问候, 迪米塔尔·格奥尔基耶夫

4

0 回答 0