私の問題はこれです: Handler.postDelayed() を使用して、500ms 後にアニメーションを実行します。コードの後半で Handler.removeCallbacksAndMessages() を使用すると、代わりに別のアニメーションを実行したい場合があります。問題は、最初のアニメーションが開始されても終了しないことがあるということです。これは同期の問題だと思います。
postDelayed() に指定された Runnable が開始されているかどうかを確認し、その場合は removeCallbacksAndMessages() をキャンセルする方法はありますか?
この Runnable からの run() が開始された場合、removeCallbacksAndMessages は効果がありますか?
コードは次のようなものです。
Handler hand = new Handler();
if (counter==2) {
one = (ImageView) findViewById(img_id);
two = im;
hand.postDelayed(new Runnable() {
public void run() {
applyAnim(0, 90, one, false);
applyAnim(0, 90, two, false);
counter = 0;
}
}, 750);
} else (counter == 3) {
im.setClickable(false);
hand.removeCallbacksAndMessages(null);
counter = 1;
applyScndAnim(0, 90, one, false);
applyScndAnim(0, 90, two, false);
}