2013-05-10 49 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

调用'无效()''后c.drawRect(......);' – JiTHiN 2013-05-10 03:31:11

+0

感谢 - rIHaN JiTHiN但它不能正常工作 – 2013-05-10 03:43:02

回答

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是空的。 – 2013-05-10 04:19:11

+0

对不起,忘了在构造函数中添加'mCanvas = new Canvas();'。是的,你是对的,我们应该只有一个“画布”。 – JiTHiN 2013-05-10 09:15:00