2012-01-19 111 views
1

我在用戶觸摸圖像視圖的地方繪製了一個圓圈。它可以很好地畫圓,但不是用戶觸摸的地方。它總是在左邊很多。下面是代碼:在用戶觸摸屏幕的地方繪製圓圈

獲取觸摸:

image.setOnTouchListener(new OnTouchListener() { 

    public boolean onTouch(View arg0, MotionEvent arg1) { 
     System.out.println("Touch recieved at "+arg1.getX() + " " + arg1.getY()); 
     touchX = (arg1.getX()); 
     touchY = (arg1.getY()); 
     System.out.println("Touch recieved at "+touchX + " " + touchY); 
     image.setImageBitmap(createImage()); 

     return true; 
    } 
}); 

,並在圖像上繪圖:

public Bitmap createImage(){ 
     Bitmap image = bmp.copy(Bitmap.Config.RGB_565, true); 
     Canvas canvas = new Canvas(image); 
     Paint paint = new Paint(); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setColor(Color.GREEN); 
     canvas.drawCircle(touchX, touchY, radius, paint); 
     System.out.println("Drew a circle at "+touchX+" " + touchY+" with a radius of "+radius+"."); 
     return image; 
    } 

任何想法?

回答

1

嘗試

touchX=touchX- image.getWidth()/2; 
touchY=touchY- image.getHeight()/2; 

此畫將繪製圖像的中心位置輕觸

+0

嗯,使它更接近......但還是關閉?它就像你在屏幕上移動得越遠,越遠。 – 2012-01-19 03:08:34

1

你必須觸摸聽者不添加到佈局的圖像。將setOnTouchListener添加到佈局。不需要圖像的觸摸監聽器。

+0

試過這個,沒有工作。 – 2012-01-19 03:33:30

+0

您是否刪除了圖像的觸摸監聽器?您的佈局寬度和高度是否爲填充父項?在onTouch方法中添加Action down條件。如果(arg1.getAction()== ActionEvent.ACTION_DOWN)。如果你想拖動使用ACTION_MOVE – 2012-01-19 04:20:58

+0

我用一種不同的方法解決了這個問題。謝謝。 – 2012-01-19 13:49:48