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

Хм, сделал это гораздо ближе ... но все-таки от ?? Это похоже на то, что вы двигаетесь по экрану, дальше от него. –

1

Вы должны добавить сенсорный слушателя к раскладке не к изображению. Добавьте setOnTouchListener в макет. Нет необходимости прикосновения к изображению.

+0

Пробовал это, не работал. –

+0

Вы удалили сенсорный приемник изображения? Является ли ваша ширина и высота макета заполненными родителями? В методе onTouch добавьте условие действия вниз. если (arg1.getAction() == ActionEvent.ACTION_DOWN). Если вы хотите перетащить, используйте ACTION_MOVE –

+0

. Я исправил проблему другим способом. Благодарю. –

Смежные вопросы