スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Android]アニメーションを使ってみる


ImageView imageView = (ImageView) findViewById(R.id.imageview);
RotateAnimation rotate = new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(1000);
imageView.startAnimation(rotate);


最初startAnimationの存在に気づかず、setAnimationを代わりに使っていたら
全然動いてくれず困りました。
アニメーションをさっさと実行したい場合はstartAnimationを使うようです。


setAnimationを使う場合は、アニメーションのstartTimeを設定して
Viewをinvalidateする必要があるようです。

http://developer.android.com/

/* setStartTimeを使う例 */

// AnimationUtils.currentAnimationTimeMillisを使って指定
rotate.setStartTime(AnimationUtils.currentAnimationTimeMillis());
imageView.setAnimation(rotate);
imageView.invalidate();


/* setStartOffsetを使う例 */

// 何ミリ秒後に実行するかを指定
rotate.setStartOffset(1000);
imageView.setAnimation(rotate);
imageView.invalidate();


複数のアニメーションを組み合わせて実行する場合は、AnimationSetを利用すると良さそう。

TranslateAnimation translate = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0);
translate.setDuration(1000);
translate.setInterpolator(new CycleInterpolator(3));
translate.setStartOffset(0);

RotateAnimation rotate = new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(1000);
rotate.setStartOffset(1000);

AnimationSet animationSet = new AnimationSet(false);
animationSet.addAnimation(translate);
animationSet.addAnimation(rotate);
imageView.startAnimation(animationSet);


大変参考になりました。

http://www.adamrocker.com/blog/181/android_animation.html

コメントの投稿

非公開コメント

プロフィール

jou4

Author:jou4
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。