Java 在触摸输入之后绘制轨迹

Java 在触摸输入之后绘制轨迹,java,android,touch,paint,Java,Android,Touch,Paint,我正在尝试创建一个当触摸屏幕时播放音乐的音乐垫。我还希望有一个跟踪用户手指的线索 正如你在图片中看到的,我可以画到屏幕上,它跟随触摸,但它不会消失,我留下了一条巨大的彩色线 我正在使用android中的paint类 这是我用来画画的代码 public class SingleTouchEventView extends View{ private static final String DEBUG_TAG = "Velocity"; private VelocityTracker mVe

我正在尝试创建一个当触摸屏幕时播放音乐的音乐垫。我还希望有一个跟踪用户手指的线索

正如你在图片中看到的,我可以画到屏幕上,它跟随触摸,但它不会消失,我留下了一条巨大的彩色线

我正在使用android中的paint类

这是我用来画画的代码

public class SingleTouchEventView extends View{

 private static final String DEBUG_TAG = "Velocity";
 private VelocityTracker mVelocityTracker = null;
 public Paint paint = new Paint();
 public Path path = new Path();
 int sr = 44100;
 boolean isRunning = true;

public SingleTouchEventView(Context context, AttributeSet attrs) {

super(context, attrs);


int [] mColors={0xFFFF0000,0xFFFF00FF,0xFF0000FF,0xFF00FFFF,0xFF00FF00,0xFF000000,0xFFFFFFFF,0xFFFFFF00,0xFFFF0000};
Shader s=new SweepGradient(0,0,mColors,null);
paint.setShader(s);
paint.setAntiAlias(true);
paint.setStrokeWidth(6f);
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);

  }

 @Override
 protected void onDraw(Canvas canvas) {
  canvas.drawPath(path, paint);
  }

 @Override
 public boolean onTouchEvent(MotionEvent event) {
  float eventX = event.getX();
  float eventY = event.getY();

case MotionEvent.ACTION_MOVE:
    path.lineTo(eventX, eventY);

调用canvas.drawRGB(),以防操作出现与背景颜色匹配的RGB颜色。您需要在
onDraw()中对画布进行引用。

有两条路径可供选择

二) 简单一点:在快速的间隔中,将画布与位图或画布混合,这是画布的原始背景。这种混合可以通过在画布上绘制背景和一些alpha来完成,这取决于您希望旧像素褪色的速度。这是非常低效的,丑陋的概率很高,但很容易做到

一) 右一:淡入附加了时间状态的自定义像素路径。将时间数据附加到每个像素或路径,后者更好。定义元件寿命的
阈值。使用delta(现在为p.time)和阈值计算的密度(alpha通道)在画布上重新绘制该像素/路径<代码>1-(现在-p.time)/threshold
是一个良好的开端。请注意,这更难、更高效、更理想、更容易调整,而且是正确的做法