http://developer.Android.com/training/animation/cardflip.html
上記のリンクは静的レイアウトを切り替えます..動的レイアウトを持つ2つのアクティビティ間でCardFlip
を実行したいです..よろしくお願いします.. :)
私には2つの活動があります...
Main_Activity
(Say Galaxy s3)Search_Activity
。Main_Activity
には検索ボタンがあります。ボタンをクリックすると、Main_Activity
ビューはSearch_Activity
にカードフリップする必要があります。同様に、ユーザーが製品を選択すると、Card-Flip
その逆になります。
上記のURLのように実装しようとしましたが、XML
を使用して定義された2つの静的レイアウト間でのみ反転します。そして、私はActionBar
に検索を実装しています
私が得たものから、あなたは活動の間でまったく同じカードフリップをすることはできません。
だが、
ご存知かもしれませんが、アクティビティ間の遷移をアニメーション化するにはoverridePendingTransition()
が必要です( ここでドキュメント )。これで必要なのは、トリックを実行するためのアニメーションリソースだけです。私はこれらを使用しました:
fade_in.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<scale
Android:duration="200"
Android:fromXScale="0.0"
Android:fromYScale="1.0"
Android:interpolator="@Android:anim/accelerate_decelerate_interpolator"
Android:pivotX="50%"
Android:pivotY="50%"
Android:startOffset="200"
Android:toXScale="1.0"
Android:toYScale="1.0" />
<alpha
Android:duration="1"
Android:fromAlpha="0.0"
Android:startOffset="200"
Android:toAlpha="1.0" />
</set>
fade_out.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<scale
Android:duration="200"
Android:fromXScale="1.0"
Android:fromYScale="1.0"
Android:interpolator="@Android:anim/accelerate_decelerate_interpolator"
Android:pivotX="50%"
Android:pivotY="50%"
Android:toXScale="0.0"
Android:toYScale="1.0" />
<alpha
Android:duration="1"
Android:fromAlpha="1.0"
Android:startOffset="200"
Android:toAlpha="0.0" />
</set>
回転アニメーションは、特定のピボット位置(x、y座標)でZ軸(画面に入る軸)を中心にのみ回転するため、Y軸を中心に反転することはできません。
私がやったことは、高さを維持しながら中央付近の幅を拡大縮小することです。これにより、アクティビティが横向きになっているような錯覚が生じます。また、幅が0の場合、開始アクティビティと終了アクティビティはそれぞれフェードインとフェードアウトするため、切り替えているように見えます。フリップインアニメーションのduration
のscale
属性は、両方のアニメーションのすべてのstartOffset
属性と同じである必要があります。
完璧ではありませんが、私のためにトリックをしました。
それが役に立てば幸い。
受け入れられた回答に記載されているように、アクティビティ間でカードフリップアニメーションを実行することはできません(これは、新しいアクティビティを画面の中央から横に拡大するだけです)。
その理由は、overridePendingTransition()
を呼び出すときに、アニメーションを開始するアクティビティに適用するだけであり、現在開いているもの。
リンクされている(非常に優れた)チュートリアルには、合計4つのアニメーションがあり、トランジションごとに2つのアニメーションがあります(1つは画面に入るフラグメント用、もう1つは画面から出るフラグメント用)。
これが私がその問題を解決し、2つのアクティビティ間でフリップカードアニメーションを作成した方法ですが、それは私のアクティビティの内容に非常に習慣的です。状況によっては、最初のアクティビティに全画面画像が含まれていて、その画像を同じサイズの別のビューに反転させたいだけでした。
overridePendingTransition(0, 0)
を呼び出して、自動ウィンドウアニメーションを無効にしますObjectAnimator
sを使用してコードに書き直しました。onBackPressed()
メソッドをオーバーライドして、同じアニメーションを逆の順序で実行しますこのメカニズムを使用すると、ビュー間をアニメーション化するだけなので、絶対に任意のカスタム遷移を実行できます。そのテクニックに関する詳細は次のとおりです。 https://www.youtube.com/watch?v=ihzZrS69i_s#t=1001