2015-03-19 7 views
0

Я сделал публичный класс, который расширяет ImageView под названием ZoomInZoomOut. В этом представлении, поместив один палец вниз, пользователь может перетащить изображение вокруг. Два пальца вставляются и выходят, что позволяет пользователю увеличивать или уменьшать масштаб. Все это прекрасно работает.Android: Использование onDoubleTap для рисования круга

Теперь я хочу дважды нажать, чтобы нарисовать круг с точными координатами x и y, где пользователь прикасается. По какой-то причине нижеприведенный код не рисует круг ... ничего не происходит.

class MyGestureDetector extends SimpleOnGestureListener { 



    @Override 
    public boolean onDoubleTap(MotionEvent event) { 


     Bitmap bmOverlay = Bitmap.createBitmap(containerWidth, 
       containerHeight, 
       Bitmap.Config.ARGB_8888); 
     Canvas canvas = new Canvas(bmOverlay); 
     Paint p = new Paint(); 
     p.setAntiAlias(true); 
     p.setColor(Color.RED); 
     p.setStrokeWidth(2); 
     p.setStyle(Paint.Style.STROKE); 
     canvas.drawBitmap(bmOverlay, matrix, null); 
     canvas.drawCircle(event.getX(),event.getY(), 
       100, p); 

     return true; 
    } 



    @Override 
    public boolean onDown(MotionEvent e) { 
     return false; 
    } 
} 

ответ

1

Вы ничего не делаете с растровым рисунком после его рисования. Вы также пытаетесь нарисовать растровое изображение на холсте, созданном из растрового изображения.

Вы должны переопределить onDraw и нарисовать его растровое изображение при использовании onDoubleTap для обновления растрового изображения по мере необходимости.

+0

Где я должен переопределять onDraw? В активности, отображающей изображениеView? – nnnnnnitters

+1

Вам нужно создать собственное представление, чтобы обрабатывать чертеж в представлении напрямую, а не пытаться рисовать и перемещать растровое изображение. Проверьте http://developer.android.com/training/custom-views/custom-drawing.html –

+0

Собственно, этот класс MyGestureDetector находится внутри класса, который расширяет ImageView. Так что я должен сделать другой пользовательский вид для обработки чертежа? – nnnnnnitters