我一直试图在触摸事件发生时,在Touch的位置,在ImageView内画一个圆圈。我已经制定了一些例子,包括Android - Canvas drawLine inside ImageView。 我的问题是,这个圆圈大约出现了。比触摸点低117px。 我的代码 -
public boolean onTouchEvent(MotionEvent event){
Canvas c;
Paint p;
ImageView v;
Bitmap bm;
v = (ImageView)findViewById(R.id.image1);
bm = Bitmap.createBitmap(v.getWidth(),v.getHeight(),Config.ARGB_8888);
c = new Canvas(bm);
p = new Paint();
p.setColor(Color.GREEN);
float x = event.getX(); float y = event.getY();
c.drawCircle(x, y, 20, p);
v.setImageBitmap(bm);
return true;
}
Here是AVD的屏幕截图(我也在真实设备上测试了它)。我不知道出了什么问题或者我错过了什么基本事实。 请帮助。
答案 0 :(得分:2)
看起来你正在覆盖Activity的onTouchEvent?如果是这样,定位将相对于它的视图而不是图像视图。您必须考虑图像视图的位置并相应地进行翻译。
int relPosX = event.getX() - getLeft();
int relPoxY = event.getY() - getTop();