アニメーションはViewFlipper独自の機能というわけではありません。ViewFlipperの親クラスであるViewAnimatorのメソッドにより実現しています。
android.widget.ViewAnimator を継承しているクラスは多くはありませんが、リファレンスでは以下の4つのウィジェットがあります(参照)。
- ViewFlipper
- ViewSwitcher
- ImageSwitcher
- TextSwitcher
以下ではViewFlipperをベースにViewAnimatorの機能を記載していますが、
上記4つのウィジェットは、いずれも今回紹介するアニメーションの設定方法が利用できます。
アニメーションする
アニメーションする方法はソースコードで指定する場合と、XMLでの指定の2通りがあります。
ソースコードからの指定で、アニメーションに必要なメソッドは以下の通りです。
- ViewAnimator#setInAnimation(Animation inAnimation)
- ViewAnimator#setOutAnimation(Animation inAnimation)
スクリーンにViewが表示されるタイミング/非表示になるタイミングでアニメーションを設定できます。
| 1 2 3 4 5 | case R.id.prevButton: viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left)); viewFlipper.showPrevious(); break; |
上記サンプルでは、AnimationUtilsをつかってAndroid SDK標準で用意されているアニメーションを利用しています。
Android SDKのアニメーションのリソース一覧は以下の通りです。
Android.R.anim
| リソース名 | 動きの説明 |
|---|---|
| accelerate_decelerate_interpolator | 開始と終了時に減速する |
| accelerate_interpolator | 加速しながら |
| anticipate_interpolator | 移動方向と逆に動いてから移動開始 |
| anticipate_overshoot_interpolator | 移動方向と逆に動いてから移動を開始、終了地点を行き過ぎて戻る |
| bounce_interpolator | バウンド |
| cycle_interpolator | 回転 |
| decelerate_interpolator | 速度を落としながら |
| fade_in | フェードイン |
| fade_out | フェードアウト |
| linear_interpolator | 等速移動 |
| overshoot_interpolator | オーバーシュート(少し行き過ぎて戻る) |
| slide_in_left | スライドイン(右) |
| slide_out_right | スライドアウト(左) |
上記以外にも、自分でカスタマイズしたアニメーションをViewに指定することもできます。
(カスタマイズの方法については、次回を予定しています)
XMLから設定する
ソースコードからAnimationを生成する以外にもXMLからもアニメーション指定が可能です
| 1 2 3 4 5 6 | <ViewFlipper android:id="@+id/flipper" android:inAnimation="@android:anim/fade_in" android:layout_width="fill_parent" android:layout_height="fill_parent"> <include android:id="@+id/firstlayout" layout="@layout/first" /> <include android:id="@+id/secondlayout" layout="@layout/second" /> <include android:id="@+id/thirdlayout" layout="@layout/third" /></ViewFlipper> |
サンプルコードでは、android:inAnimation属性で"fade_in"を指定しています。XMLへ記載するだけで、アニメーションが有効になるのでとても使い勝手のよい設定方法です。
アニメーションの種類については前述の表のすべてを利用できるほか、標準のリソースは@android:animで指定します。
ViewAnimatorに関するXMLの属性は以下の2つが用意されています。
- android:inAnimation
- android:outAnimation
0 件のコメント:
コメントを投稿