誰かが私を助けてくれるかどうか疑問に思っていました.有用な助けをどこでも探していましたが、何も見つかりませんでした. 4 つのView
要素 ( Button
) があり、それらをランダムな順序で次々とアニメーション化する必要があります。を待ってみましAnimation.hasEnded()
たが、アプリ全体がフリーズします。AnimationListener
また、からブール値を変更するのを待ってみましたonAnimationEnd()
が、それもアプリをフリーズさせました。Thread.sleep()
とfor の両方でSystemClock.sleep()
同じ結果が得られました。誰か助けてくれませんか?
2286 次
1 に答える
2
これが私がそれを行う方法です:
まず、ランダム ボタン配列のメンバーを作成します。
private Button[] mRandomButtonsOrder;
次に、ランダムなボタンの順序を初期化します。
List<Button> myButtons = new ArrayList<Button>();
myButtons.add(btn1); // Add all your buttons to this array.
myButtons.add(btn2);
myButtons.add(btn3);
myButtons.add(btn4);
mRandomButtonsOrder = new Button[myButtons.size()]; // This is a member of the activity!
Random random = new Random();
int index;
for (int i = 0; i < myButtons.size(); i++)
{
do
{
index = random.nextInt() % mRandomButtonsOrder.length;
} while (mRandomButtonsOrder[index] != null);
mRandomButtonsOrder[index] = myButtons.get(0);
myButtons.remove(0);
}
initiateAnimationOnButton(0);
さて、ここに initationAnimationOnButton メソッドがあります:
private void initiateAnimationOnButton(final int buttonIndex)
{
TranslateAnimation animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta); // Just a sample using TranslateAnimation
animation.setDuration(1000);
if (buttonIndex < mRandomButtonsOrder.length - 1)
{
animation.setAnimationListener(new TranslateAnimation.AnimationListener()
{
@Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation)
{
initiateAnimationOnButton(buttonIndex + 1);
}
});
}
Button btn = mRandomButtonsOrder[buttonIndex];
btn.startAnimation(animation);
}
お役に立てれば :)
于 2013-10-03T01:46:07.923 に答える