如何在Android中的确切触摸位置放置图像图标

时间:2014-01-15 01:49:53

标签: android image ontouchevent

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

当我使用因子20并在我的onTouch事件中使用以下代码时,

Bitmap img = BitmapFactory.decodeResource(Res, R.drawable.myPoint);
canvas.drawBitmap( img,  vec.get(i).x - 20, vec.get(i).y - 20, null);

图像似乎叠加在我的触摸点上(我不确定哪个坐标)。输出看起来像这样 enter image description here

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

      Bitmap img = BitmapFactory.decodeResource(Res, R.drawable.myPoint);
       canvas.drawBitmap( img,  vec.get(i).x , vec.get(i).y , null);

如图所示,图像似乎略微远离触摸点。 enter image description here

我的目标是让图像的尖端(右侧)正确指向触摸发生的确切坐标,以便我可以射击 从那里到下一个点击位置的路径。 enter image description here

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

2 个答案:

答案 0 :(得分:1)

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

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

x = touchX - bitmapWidth;
y = touchY - bitmapHeight/2;

答案 1 :(得分:0)

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

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

该代码应该让您知道该怎么做。