0

アニメーション効果を実現するために矢印のアルファ値が変化する水平方向に整列されたいくつかの矢印で構成される実行するアニメーションがあります (つまり、最初の矢印はアルファ 1.0 を持ち、次に 2 番目の矢印は値 1.0 などを取得します)。

したがって、次のような関数がある場合:

void highlightFirstArrow()
{
    mArrow1.setAlpha(1.0f);
    mArrow2.setAlpha(0.75f);
    mArrow3.setAlpha(0.50f);
    mArrow4.setAlpha(0.20f);
}

次に、次のような関数を開始し、何度も繰り返してから停止します。

void animateArrows()
    {
    highlightFirstArray();
    pause;
    highlightSecondArray();
    pause;
    etc.
    }

たとえば、これが for ルックで実行された場合、明らかにこれは GUI スレッドをロックします。希望のアニメーションを実現するためのオプションは何ですか:

- run a for loop in a separate thread 
- don't use a loop, instead constantly execute the functions individually via a timer
- use built in specific android animation mechanisms. If so which is most appropriate? Would AnimatorSet() be good for this scenario, or something else
4

1 に答える 1

0

ループやタイマーは絶対に使用しないでください。ビューをアニメーション化するのに役立つ組み込みクラスがたくさんあります。たとえば、次を使用できますValueAnimator

ValueAnimator.ofFloat(1f, 0.2f).setDuration(1000).addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override public void onAnimationUpdate(ValueAnimator animation) {
        float value = (float) animation.getAnimatedValue();
        arrow1.setAlpha(value);
        arrow2.setAlpha(value);
    }
});
于 2015-07-21T23:08:10.837 に答える