我正在尝试创建一个在触摸屏幕时播放音乐的音乐垫。我还希望有一条跟随用户手指的路径。
正如你在图像中看到的那样,我可以在屏幕上绘制并触摸它,但它并没有消失,我留下了一条巨大的彩色线条。
我在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);
答案 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
是一个好的开始。请注意,这更难,更有效,更理想,更具调整性和正确的事情。