这是我的活动主要代码
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事件中的内容? 即,在触摸屏幕时,屏幕应该与新屏幕一样好。
答案 0 :(得分:0)
您需要做的是告诉他们在ActionUp上无效(您执行此操作)。然后它会再次自动调用onDraw。那么诀窍就是不要画任何东西。您需要做的就是清除路径,或者设置一个导致绘图例程不绘制的变量。无论如何,背景总是会清除,所以你需要它才能在无效之后绘制路径。
答案 1 :(得分:0)
正如@Mike M所说,
path.reset()
适用于ACTION_UP
案例
当我抬起手指/触摸时,它会清除屏幕即画布。