点击Android的屏幕上的ImageView

点击Android的屏幕上的ImageView

问题描述:

我的问题是点击imageview,并知道在图像(通过ImageView调整大小),我点击。点击Android的屏幕上的ImageView

我现在的算法是:

上的ImageView的onTouch方法,得到MotionEvent的Xÿ立场和做数学题

int realX = (X/this.getWidth()) * bitmapWidth; 
int realY = (Y/this.getHeight()) * bitmapHeight; 

凡bitpmapWidth和bitmapHeight来自原始位图。

任何人都可以帮助我吗?

+0

确实想知道哪个区域,您点击图片?就像如果图像有按钮,那么你的需求被发现天气你点击图像中的按钮?这是你的要求吗? –

+0

你好Varun,这会有所帮助,但不是。谢谢。 –

几乎是正确的,数学应该只是有点不同。也请记住的ImageView的getHeight()和的getWidth()会的onCreate中0,我已经使用信息从这个答案getWidth() and getHeight() of View returns 0使用获取的宽度和高度,一旦它可用

iv = (ImageView) findViewById(R.id.img); 

    iv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      iv.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
      xScaleFactor = iv.getWidth()/originalBitmapWidth; 
      yScaleFactor = iv.getHeight()/originalBitmapHeight; 

      Log.v(TAG, "xScaleFactor:" + xScaleFactor + " yScaleFactor:" + yScaleFactor); 
     } 
    }); 

    iv.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent event) { 
      int touchX = (int) event.getX(); 
      int touchY = (int) event.getY(); 

      int realX = touchX/xScaleFactor; 
      int realY = touchY/yScaleFactor; 

      Log.v(TAG, "realImageX:" + realX + " realImageY:" + realY); 
      return false; 
     } 
    }); 
+0

这就是答案,谢谢@nikita! –