我想获得
ImageView的坐标,无论设备大小如何.
有没有办法!!
我试图为ImageView创建特定大小,甚至父视图的特定大小,但它不起作用.
我尝试了以下可能的方法.
int[] posXY = new int[2]; imageview.getLocationOnScreen(posXY); int MoveX = posXY[0]; int MoveY = posXY[1];
我也尝试过Matrix,但不能正常工作.
Matrix m = imageview.getImageMatrix();
尝试下面的代码,但它也无法正常工作.!!
我需要为同一点(位置)的所有设备获得相同的{x,y}坐标.
final float[] getPointerCoords(ImageView view,MotionEvent e) { final int index = e.getActionIndex(); final float[] coords = new float[] { e.getX(index),e.getY(index) }; Matrix matrix = new Matrix(); view.getImageMatrix().invert(matrix); matrix.mapPoints(coords); return coords; }
这是绘制方法:
如果我在绘图中设置位图图像,则它不适合每个设备的屏幕.如果我设置显示宽度和高度的图像,我会得到不同的坐标.
@Override public void draw(Canvas canvas) { // TODO Auto-generated method stub super.draw(canvas); Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.subimage); mBitmap = ((BitmapDrawable) drawable).getBitmap(); canvas.drawBitmap(mBitmap,null); }
任何想法或帮助都会非常有用.
解决方法
您必须先计算设备屏幕比例,
deviceWidth / screenHeight = ratio
那么你必须将它与你想要的坐标相乘:
ratio * xCoord = newXcoord; // and same for Y coord
通过这样做,您将保留所有设备大小的等效坐标.
您也可以声明尺寸和坐标相对于屏幕尺寸的百分比,如:
x = 0.2 * deviceWidth // %20 of device width from left