android – 在自定义ImageView中绘制位图并获取ImageView的坐标,而不管设备如何

前端之家收集整理的这篇文章主要介绍了android – 在自定义ImageView中绘制位图并获取ImageView的坐标,而不管设备如何前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想获得 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

猜你在找的Android相关文章