2013-05-10 1 views
0

onDraw (Холст холст) работает автоматически. В этом представлении метод onTouch() прослушивает прикосновение к экрану. Мне нужно перерисовать прямоугольник, когда я нажимаю на экран, но он не рисует холст прямоугольника.onTouch() не может нарисовать холст

public class Viewer extends View implements OnTouchListener{ 

    public Viewer(Context context) { 
     super(context); 

     ............. 
     .............. 
     this.setOnTouchListener(this);    
    } 

    @Override 
    public void onDraw(Canvas canvas){ 
     super .onDraw(canvas); 
     drawBackGround(imgObj.bg01, canvas);  
    } 

    @Override 
    public boolean onTouch(View v,MotionEvent event) { 
     // TODO Auto-generated method stub  

     Canvas c = new canvas(); 
     c.drawRect(.......); //<------ It's work but it isn't redraw 
     return true; 
    } 
+1

вызов 'Invalidate()' после 'c.drawRect (.......);' – JiTHiN

+0

спасибо - Рихан JiTHiN, но это не работает –

ответ

0

Попробуйте это,

Canvas mCanvas; 
@Override 
    public void onDraw(Canvas canvas){ 

     mCanvas = canvas; 
     drawBackGround(imgObj.bg01, mCanvas); 
     super.onDraw(mCanvas); 

    } 

    @Override 
    public boolean onTouch(View v,MotionEvent event) { 
     // TODO Auto-generated method stub  

     mCanvas.drawRect(.......); 
     invalidate(); 
     return true; 
    } 
+0

это исчезнет , Я пытаюсь проверить точку останова. Я обнаружил, что mCanvas имеет значение null. –

+0

Извините, забыли добавить 'mCanvas = new Canvas();' в конструкторе. Да, вы правы, у нас должно быть только одно «холст». – JiTHiN