2017-03-06 96 views
0

我的問題是點擊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,這會有所幫助,但不是。謝謝。 –

回答

0

幾乎是正確的,數學應該只是有點不同。也請記住的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! –