如何清除画布屏幕?

时间:2018-02-28 09:53:57

标签: java android

这是我的活动主要代码

package com.example.dell_7560.experiment6;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new TouchScreen(this,null));
    }
}

这是触摸屏代码

package com.example.dell_7560.experiment6;

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 TouchScreen extends View {

    private Paint paint=new Paint();
    private Path path=new Path();
    public TouchScreen(Context context, AttributeSet attributeSet) {
        super(context,attributeSet);
        paint.setAntiAlias(true);
        paint.setStrokeWidth(6f);
        paint.setColor(Color.RED);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeJoin(Paint.Join.ROUND);
    }
    protected void onDraw(Canvas canvas)
    {
        canvas.drawPath(path,paint);
    }
    public boolean onTouchEvent(MotionEvent event)
    {
        float eventX = event.getX();
        float eventY = event.getY();
        switch (event.getAction())
        {
            case MotionEvent.ACTION_DOWN:
                path.moveTo(eventX,eventY);
                return true;
            case MotionEvent.ACTION_UP:
                break;
            case MotionEvent.ACTION_MOVE:
                path.lineTo(eventX,eventY);
                break;
            default:
                return false;
        }
        invalidate();
        return true;
    }
}

现在该应用程序的工作方式如下: 触摸屏幕。 拖动手指(它会产生红灯) 取消屏幕,红线创建停止。 直到这里很酷。

我的疑问是,如何清除ACTION_UP事件中的内容? 即,在触摸屏幕时,屏幕应该与新屏幕一样好。

2 个答案:

答案 0 :(得分:0)

您需要做的是告诉他们在ActionUp上无效(您执行此操作)。然后它会再次自动调用onDraw。那么诀窍就是不要画任何东西。您需要做的就是清除路径,或者设置一个导致绘图例程不绘制的变量。无论如何,背景总是会清除,所以你需要它才能在无效之后绘制路径。

答案 1 :(得分:0)

正如@Mike M所说,

path.reset()适用于ACTION_UP案例 当我抬起手指/触摸时,它会清除屏幕即画布。