0

一旦触摸事件发生,我一直在尝试在 ImageView 内绘制一个圆圈,在 Touch 的位置。我已经制定了一些例子,包括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;
}

是 AVD 的屏幕截图(我也在真实设备上对其进行了测试)。我不知道出了什么问题或我遗漏了什么基本事实。请帮忙。

4

1 回答 1

2

看起来您正在覆盖 Activity 的 onTouchEvent?如果是这样,定位将相对于它的视图而不是图像视图。您必须考虑图像视图的位置并相应地进行翻译。

int relPosX = event.getX() - getLeft();
int relPoxY = event.getY() - getTop();
于 2013-02-27T21:46:01.163 回答