cobonas

2012.09.30

AndroidでImageをぺろんと奥行方向(3D)に回転させる

最近、とあるAndroidアプリを開発しているのですが、その中でとある画像をぐりんと
奥行き方向というか3Dというか、ぺろんと回転させるという要件がありました。
もっと分かり易く言うと、かるたとかトランプとかの裏表をひっくり返すイメージですね。

標準のアニメーションとして用意されていれば話は早かったのですが、どうやら標準ではないらしい。。
調べ方が悪いんでしょうが、なかなかわからずエラい苦労したのですが、
なんとかやり方がわかりましたのでご紹介してみます。

まず、layoutファイルです。
RelativeLayoutにImageViewを2枚重ねて置きます。

layout/front_back.xml

※このとき、裏面にあたるImageViewのvisibilityは”invisible”にしておきます。

次にぺろんとさせるアニメーションのクラスです。Animationクラスを継承して作ります。

FrontBackSwitchAnimator.class

最後に実際にこれらを使うActivityです。

FrontBackSwitchActivity.class

ちょっとごちゃごちゃしていますが、まとめると、
・何らかのイベントに引っ掛けて、switchFrontBackView()を呼びだす
 その際、switchFrontBackView()にbooleanを渡して、裏表のどちらにひっくり返すのかを制御しています
・switchFrontBackViewメソッド内で、表と裏のImageViewを取得し、2つのViewのvisibility切り替え時に
 アニメーションを付与しています。

イメージが掴みにくいと思いますので、実際に動かして見てください。(動くと思いますので。。