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();
}
}
とボタンとの私の活動:
あなたのTouchEventDraw
クラスにメソッドを追加し、あなたに続いて
canva.drawColor(Color.WHITE);
それに次のように呼び出す必要が
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();
}
};
}
を呼び出し、その後
path
空を設定する必要があります次のようにします:public void clear(Canvas canva){ canva.drawColor(Color.WHI TE)。 } – Veni
@Veniはい。しかし、渡すキャンバスパラメータはありません。これは 'SurfaceView'ではなく' View'を使うことによると思います。したがって、コードを修正する必要があるかもしれません。私はパスを使って、別のアイデアを持っています。私の答えを編集させてください。 – Doomsknight
奇妙な、それは私をよくしている – Veni