Android Circle在imageview中的显示低于预期

时间:2013-02-27 21:39:27

标签: android android-canvas android-imageview ontouchevent

我一直试图在触摸事件发生时,在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的屏幕截图(我也在真实设备上测试了它)。我不知道出了什么问题或者我错过了什么基本事实。     请帮助。

1 个答案:

答案 0 :(得分:2)

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

int relPosX = event.getX() - getLeft();
int relPoxY = event.getY() - getTop();