2014-11-14 66 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

相关问题