2012-01-19 10 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

が、これは画像の中心あなたはあなたがいない画像をレイアウトにタッチリスナーを追加する必要が

+0

を見てくださいうーん、それははるかに...近いが、まだオフに作られました?あなたが画面上を移動するほど、遠くに行くほどそれは得られます。 –

1

に触れる場所を描きます

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

で描くようにしてください。レイアウトにsetOnTouchListenerを追加します。イメージにタッチリスナーの必要はありません。

+0

これを試してもうまくいきませんでした。 –

+0

画像のタッチリスナーを削除しましたか?あなたのレイアウトの幅と高さは塗りつぶしの親ですか? onTouchメソッドではAction down条件を追加します。 if(arg1.getAction()== ActionEvent.ACTION_DOWN)。あなたがACTION_MOVE –

+0

を使用してドラッグする場合は、別の方法で問題を修正しました。ありがとう。 –

関連する問題