2015-01-17 5 views
0

화면을 터치 할 때 음악을 재생하는 음악 패드를 만들려고합니다. 나는 또한 사용자 손가락을 따라 가신 흔적이 있기를 바랍니다. 당신은 이미지에서 볼 수 있듯이터치 입력을 따르는 페인트 흔적

a busy cat

나는 화면에 그릴 수 있고 터치를 다음 그러나 그것은 사라질 나던 나는 대규모 색 선으로 남아 있어요.

내가 여기에 안드로이드

에 페인트 클래스를 사용하고 당신의 배경 색상을 일치하는 RGB 컬러의 경우 ACTION_UP에서

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

당신이로 갈 수있는 두 가지 경로가있다

II) 쉬운 : 빠른 간격으로,이에 원래의 배경 인 비트 맵 또는 캔버스와 캔버스를 혼합 캔버스. 이 블렌딩은 오래된 픽셀이 얼마나 빨리 사라지 길 원하는지에 따라 알파를 가진이 캔버스 위에 배경을 그려서 수행 할 수 있습니다. 이것은 매우 비효율적이며, 높은 확률로 추악하지만 쉽지 않습니다.

I) 오른쪽 : 시간 상태가 첨부 된 맞춤 픽셀 - 경로를 사라지게합니다. 모든 픽셀 또는 경로에 시간 데이터를 첨부하십시오. 후자가 더 좋습니다. 요소의 수명을 위해 threshold을 정의하십시오. delta (now - p.time) 및 임계 값으로 계산 된 밀도 (알파 채널)로 캔버스에서이 픽셀/경로를 다시 그립니다. 1 - (now - p.time)/threshold은 좋은 출발점입니다. 이것은 더 어렵고, 더 효율적이며, 더 원하고, 조정할 수있는 능력이 있으며,해야 할 일입니다.

0

전화 canvas.drawRGB()을 그릴 사용하여 코드 메신저입니다. 당신의 캔버스에 대한 참조를 필요로하여 onDraw()