2014-11-14 120 views
0

我是Android的初學者,在放大頁面中尋找xy視圖的位置,但我嘗試了很多我無法獲得的。使用下面的代碼,但即時獲取變焦前後的相同位置。放大後請任何人發佈尋找xy位置的代碼。如何在android中放大後獲取視圖的xy位置

private int fieldImgXY[] = new int[2]; 
v.getLocationOnScreen(fieldImgXY); 
Log.v("Log",fieldImgXY[0]+" "+fieldImgXY[1]); 

我全碼:

 zoom = (ZoomView) findViewById(R.id.maincontainerScroller);  

    imageView = new ImageView(this); 
    imageView.setImageResource(R.drawable.ic_launcher); 
    imageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    zoom.addView(imageView);  

    imageView.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      v.getLocationOnScreen(fieldImgXY); 
      Log.v("Log",fieldImgXY[0]+" "+fieldImgXY[1]); 

     } 
    }); 
+0

什麼位置?你想要親戚或絕對座標嗎? onTouch點? – 2014-11-14 12:13:36

+0

如果你訪問相同的視圖參考x和y是相同的,因爲在這裏你正在做的動畫,這意味着原始視圖座標不會chanage .. – sri 2014-11-14 12:34:27

+0

@AndresCardenasPardo我想要絕對座標,當我點擊視圖(圖片)... – 2014-11-14 13:01:20

回答

0

用於採取從圖像的絕對座標我用這個方法:

void calculeAbsoluteCoorde(MotionEvent e){ 
    float []m = new float[9]; 
    matrix.getValues(m); 
    float transX = m[Matrix.MTRANS_X] * -1; 
    float transY = m[Matrix.MTRANS_Y] * -1; 
    float scaleX = m[Matrix.MSCALE_X]; 
    float scaleY = m[Matrix.MSCALE_Y]; 
    lastTouchX = (int) ((e.getX() + transX)/scaleX); 
    lastTouchY = (int) ((e.getY() + transY)/scaleY); 
    lastTouchX = Math.abs(lastTouchX); 
    lastTouchY = Math.abs(lastTouchY); 
} 

我suposeü用矩陣變焦,我希望它幫助ü

+0

先生我想在OnClickListener – 2014-11-17 12:48:57

+0

中調用這個方法,那麼你需要矩陣的值MTRANS_X和MTRANS_Y,但這不是座標。使用imageView.setOnTouchListener,是一個imageView,而不是一個按鈕 – 2014-11-17 12:57:19

+0

謝謝先生,它正在爲圖像視圖.......現在我需要相對佈局點擊位置前後縮放(捏).... – 2014-11-17 13:54:30

相關問題