現状は音や振動といった機能を遅延実行させることはできたのですが、なぞり書きの機能だけがうまく遅延実行させることができない状態です。
以下のプログラムのようにdelayFunc1,2 とおいて、主に①~④をいじりながら遅延させようと試みたのですが、実行すると触ってもいないところからなぞり書きがスタートしたり、なぞった軌跡とは全く異なる軌跡となったり、予想しない動作をしてしまいます。
どのように訂正すべきなのでしょうか?
MotionEvent motion_e;
private final Runnable delayFunc1= new Runnable() {
@Override
public void run() {
// 遅延実行したい処理
path.moveTo(motion_e.getX(), motion_e.getY());
}
};
private final Runnable delayFunc2= new Runnable() {
@Override
public void run() {
// 遅延実行したい処理
path.lineTo(motion_e.getX(), motion_e.getY());
}
};
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN :
motion_e=event;
new Handler().postDelayed( delayFunc1,1000);//描画遅延実行1 ①
new Handler().postDelayed( delayFunc,0);//音遅延実行
path.moveTo(event.getX(), event.getY()); //②
break;
case MotionEvent.ACTION_MOVE:
motion_e=event;
//path.lineTo(event.getX(), event.getY()); //③
new Handler().postDelayed( delayFunc2,1000);//描画遅延実行2
break;
case MotionEvent.ACTION_UP:
motion_e=event;
//path.lineTo(event.getX(), event.getY()); //④
new Handler().postDelayed( delayFunc2,1000);//描画遅延実行2
break;
}
invalidate();
return true;
}