2016-11-29 117 views
0

我需要制作一个按钮,它可以清洁我的画布和一个安全按钮。 我希望活动保持现状。道路上所画的将被删除。非常感谢您的帮助。我的代码:画布上的重置按钮

import android.content.Context; 
    import android.graphics.Canvas; 
    import android.graphics.Color; 
    import android.graphics.Paint; 
    import android.graphics.Path; 
    import android.util.AttributeSet; 
    import android.view.MotionEvent; 
    import android.view.View; 



public class TouchEventDraw extends View { 
//Variable 

private Paint paint = new Paint(); 
private Path path = new Path(); 

//Konstruktor 
public TouchEventDraw(Context context, AttributeSet attrset) { 
    super(context, attrset); 
    paint.setAntiAlias(true); 
    paint.setColor(Color.BLACK); 
    paint.setStrokeJoin(Paint.Join.MITER); 
    paint.setStyle(Paint.Style.STROKE); 
    paint.setStrokeWidth(5f); 

} 


/** 
* The most important step in drawing a custom view is to override the   
* @param canvas object that the view can use to draw itself. */ 
@Override 
protected void onDraw(Canvas canvas) { 
    if(path.isEmpty()) 
     canvas.drawColor(Color.WHITE); 
    else 
     canvas.drawPath(path, paint); 

} 

/** 
    * Method to handle touch screen motion events. 
    * @param event The motion event 
    * @return True if the event was handled, false otherwise.*/ 
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
    float xPos = event.getX(); 
    float yPos = event.getY(); 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      path.moveTo(xPos,yPos); 
      return true; 
     case MotionEvent.ACTION_MOVE: 
      path.lineTo(xPos,yPos); 
      break; 
     case MotionEvent.ACTION_UP: 
      break; 
     default: 
      return false; 
    } 
    invalidate(); 
    return true; 
} 
public void clear(){ 
    path = new Path(); 
    invalidate(); 
} 

} 

我的活动与按钮:

import android.graphics.Canvas; 
    import android.os.Bundle; 
    import android.support.v7.app.AppCompatActivity; 
    import android.view.View; 
    import android.widget.Button; 

public class DrawingScreen extends AppCompatActivity { 
Button btn; 
    TouchEventDraw ted; 
Canvas canva; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
ted=new TouchEventDraw(this,null); 

    setContentView(R.layout.activity_drawing_screen); 
    btn=(Button) findViewById(R.id.button); 
    btn.setOnClickListener(onClickListener); 

} 
private final View.OnClickListener onClickListener=new View.OnClickListener() {  
    @Override 
    public void onClick(View v) { 
ted.clear(); 
ted.invalidate(); 
    } 
}; 
} 

回答

0

您需要的方法添加到您的TouchEventDraw类,并调用它下面

canva.drawColor(Color.WHITE); 

然后在你的按钮单击,调用您创建的方法。

您应该能够使用我提供的信息实施解决方案。

我想有更多的致命问题,通过您的代码虽然,因为我看到以下内容:

  1. 的观点从来没有被提上屏幕。
  2. 您扩展视图,而不是SurfaceView。

另一种方式,你应该能够创建一个方法,而是设置path

public void clear(){ 
    path = new Path(); 
} 

那么你的平局变成

@Override 
protected void onDraw(Canvas canvas) { 
    if(path.isEmpty()) 
     canvas.drawColor(Color.WHITE); 
    else 
     canvas.drawPath(path, paint); 

} 

,并呼吁View.invalidate();

+0

你的意思像这样:public void clear(Canvas canva){Canvas.drawColor(Color.WHI){ TE); } – Veni

+0

@Veni是的。但是,您没有要传入的canvas参数。我认为这是由于使用了“View”而不是“SurfaceView”。所以你可能需要重写你的代码。我有另一个想法,使用路径。让我编辑我的答案。 – Doomsknight

+0

嗯奇怪,它对我很好 – Veni