如何在android中将图像图标放置在准确的触摸位置

如何在android中将图像图标放置在准确的触摸位置,android,image,touch-event,Android,Image,Touch Event,第一次触摸时,我在android应用程序的屏幕上放置了一个图标。 我已经能够实现同样的功能,但是我的问题是关于这个图像的位置如何 当我在onTouch事件中使用系数20并使用以下代码时 Bitmap img = BitmapFactory.decodeResource(Res, R.drawable.myPoint); canvas.drawBitmap( img, vec.get(i).x - 20, vec.get(i).y - 20, null); 图像似乎叠加在我的触摸点上(我不确定

第一次触摸时,我在android应用程序的屏幕上放置了一个图标。 我已经能够实现同样的功能,但是我的问题是关于这个图像的位置如何

当我在onTouch事件中使用系数20并使用以下代码时

Bitmap img = BitmapFactory.decodeResource(Res, R.drawable.myPoint);
canvas.drawBitmap( img,  vec.get(i).x - 20, vec.get(i).y - 20, null);
图像似乎叠加在我的触摸点上(我不确定是哪个坐标)。输出结果如下所示

当我不使用任何因子并使用以下代码时

      Bitmap img = BitmapFactory.decodeResource(Res, R.drawable.myPoint);
       canvas.drawBitmap( img,  vec.get(i).x , vec.get(i).y , null);
如图所示,图像似乎放置在稍微远离触摸点的位置。

我的目标是让图像的尖端(在右边)正确地指向触摸发生的精确坐标,这样我就可以拍摄了 从那里到下一个单击位置的路径,如下所示。


这将需要测量图像的尺寸,即宽度和高度,以将图像放置在所需位置。android默认情况下如何相对于正常的小触点放置如此大的图像。是否考虑了图像的质心

drawBitmap的x和y参数指位图的左上角

如果您给出的图像周围没有边界(假设它沿x轴对称),则这里是正确的(x,y)坐标:


测量正在绘制的位图,然后将这些值添加到绘制坐标

canvas.drawBitmap(img, vec.get(i).x + (img.x / 2), vec.get(i).y + img.y, null)
这段代码应该让你知道该怎么做

canvas.drawBitmap(img, vec.get(i).x + (img.x / 2), vec.get(i).y + img.y, null)