跟随触摸输入的绘制轨迹

时间:2015-01-17 19:49:36

标签: java android touch paint

我正在尝试创建一个在触摸屏幕时播放音乐的音乐垫。我还希望有一条跟随用户手指的路径。

a busy cat

正如你在图像中看到的那样,我可以在屏幕上绘制并触摸它,但它并没有消失,我留下了一条巨大的彩色线条。

我在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);

2 个答案:

答案 0 :(得分:0)

如果ACTION_UP的RGB颜色与您的背景颜色相匹配,请调用canvas.drawRGB()。您需要在onDraw()

中引用画布

答案 1 :(得分:0)

你可以走两条路,

II)Easy One:在快速间隔中,将画布与作为此画布的原始背景的位图或画布混合。这种混合可以通过在这个画布上绘制背景来完成,具体取决于您希望旧像素消失的速度。这是非常低效,丑陋的概率很高,但很容易做到。

I)右一:淡化自定义像素 - 附加时间状态的路径。将时间数据附加到每个像素或路径,后者更好。为元素的生命周期定义threshold。使用由delta(now-p.time)和阈值计算的密度(alpha通道)重绘画布上的此像素/路径。 1 - (now - p.time)/threshold是一个好的开始。请注意,这更难,更有效,更理想,更具调整性和正确的事情。