LoginSignup
7
7

More than 5 years have passed since last update.

AnimationSetにSetDurationすると一部機種で動かないときがある

Last updated at Posted at 2014-06-01

AlphaAnimationをaddしたAnimationSetにsetDurationすると一部機種でAnimationが動作しないことがありました。

「一部機種」とは手持ちで確認したXperia acro SO-02C(OS 2.3.4)とDIGNO ISW 11K(OS 2.3.5)の2機種です。2系全般かもしれません。

1.AnimationSetに対してsetDurationして動かない例

TranslateAnimationとAlphaAnimationをaddしたAnimationSetにsetDurationすると一部機種でアニメーションが表示されません。

TranslateAnimation move = new TranslateAnimation(0, 100, 0, 0);
AlphaAnimation alpha = new AlphaAnimation(0.f, 1.f);
AnimationSet set = new AnimationSet(false);
set.setDuration(1000);
set.addAnimation(move);
set.addAnimation(alpha);
view.startAnimation(set);

2.AnimationSetに対してsetDurationして動く例

TranslateAnimationとScaleAnimationをaddしたAnimationSetに対してsetDurationすると一部機種でもアニメーションが表示されます。
なのでAlphaAnimationをaddするのがアニメーションが表示されない原因の1つのようです。

TranslateAnimation move = new TranslateAnimation(0, 100, 0, 0);
ScaleAnimation scale = new ScaleAnimation(0.f, 1.f, 0.f, 1.f);
AnimationSet set = new AnimationSet(false);
set.setDuration(1000);
set.addAnimation(move);
set.addAnimation(scale);
view.startAnimation(set);

3.AnimationSetにAlphaAnimationをaddしても動く例

AlphaAnimationをaddした場合でも、AnimationSetではなく各Animationに対してsetDurationすれば一部機種でも正常に動きます。

TranslateAnimation move = new TranslateAnimation(0, 100, 0, 0);
move.setDuration(1000);
AlphaAnimation alpha = new AlphaAnimation(0.f, 1.f);
alpha.setDuration(1000);
AnimationSet set = new AnimationSet(false);
set.addAnimation(move);
set.addAnimation(alpha);
view.startAnimation(set);

考察

AnimationSetを使う場合は、AnimationSetではなく、addする各Animationに対してsetDurationすれば間違いなさそうです。
一部機種で動かないなんだこれ -> 直したら動いた -> 他の手持ち機種でも問題ないー、というレベルの結論を書き留めてみましたメモ。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7