我在ImageView上显示一个位图。当点击ImageView时,我想获得点击它的Bitmap的像素x / y坐标。我已经注册了ImageView的onTouchListener,在onTouch方法中,我使用getX和getY来获取触摸的位置。问题是ImageView中的图像可能比视图本身大,因此按比例缩小以适应屏幕。然后,返回的x和y坐标是视图的坐标,但不一定是位图上相应像素的坐标。
我可以获得某种比例因子来了解它的调整大小吗?或者如果没有,有人可以建议我如何获得我需要的信息吗?最重要的是我可以获得像素坐标 - 如果我必须更改视图类型,那就没关系。
此外,有时位图比屏幕小,因此可以将其缩放。在这种情况下,从MotionEvent接收的x和y可能超出实际位图的范围。
答案 0 :(得分:0)
检查ScaleType属性。你必须根据getScaleType()的结果对原始图像进行数学运算,但值得一试。
答案 1 :(得分:0)
我可以跨越同一个案例。该线程已有一年多的历史,但认为它可能对某人有用。我必须在设置到ImageView之前缩放位图。
以下是代码:
//Convert Uri to Bitmap
inputBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);
//Scale the bitmap to fit in the ImageView
Bitmap bmpScaled = Bitmap.createScaledBitmap(inputBitmap, img.getWidth(), img.getHeight(),true);
//Set the scaled bitmap to the ImageView
img.setImageBitmap(bmpScaled);
此后,触摸的坐标与位图的坐标相同。