2013-02-20 5 views
10

2つのフラグメントの間にフリップアニメーションを作成する方法を調べようとしています。フラグメント間のカスタムフリップアニメーションandroid support package

私はCardFlipトレーニングを参考にしてみましたが、それを達成できないようです。 アンドロイドサポートパッケージを使用していて、アニメーションをトゥイーンに設定しましたが、成功しませんでした。

フラグメント間でフリッピングアニメーションを実装する方法は?

ガイドから作成した最初の2つのxmlです。何か間違っているかどうかは分かります。 screen_flip_left_in.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" > 

    <!-- Before rotating, immediately set the alpha to 0. --> 
    <alpha 
     android:valueFrom="1.0" 
     android:valueTo="0.0" 
     android:propertyName="alpha" 
     android:duration="0" /> 

    <!-- Rotate. --> 
    <rotate 
     android:valueFrom="-180" 
     android:valueTo="0" 
     android:propertyName="rotationY" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
     android:duration="@integer/card_flip_time_full"/> 

    <!-- Half-way through the rotation (see startOffset), set the alpha to 1. --> 
    <alpha 
     android:valueFrom="0.0" 
     android:valueTo="1.0" 
     android:propertyName="alpha" 
     android:startOffset="@integer/card_flip_time_half" 
     android:duration="1" /> 
</set> 

screen_flip_left_out.xml:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" > 
     <!-- Rotate. --> 
    <rotate 
     android:valueFrom="0" 
     android:valueTo="180" 
     android:propertyName="rotationY" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
     android:duration="@integer/card_flip_time_full" /> 

    <!-- Half-way through the rotation (see startOffset), set the alpha to 0. --> 
    <alpha 
     android:valueFrom="1.0" 
     android:valueTo="0.0" 
     android:propertyName="alpha" 
     android:startOffset="@integer/card_flip_time_half" 
     android:duration="1" /> 

</set> 
+0

何が問題なのですか?特定のコードがクラッシュしていますか?詳細はどうぞ。 – QVDev

+0

@QVDevまず、アンドロイドサポートパッケージでは利用できないので、私はガイドからobjectanimatorを使用できません。したがって、tweenアニメーションに切り替えるまでコードがクラッシュします。そして、私はフリップ効果を全く得ていない。私はそこに別の補間要素を使用しているかどうかはわかりません。私はAPIレベル8までサポートする必要があるため、このアンドロイド:補間= "@アンドロイド:anim/accelerate_decelerate_interpolator"を使用し、ガイド内の1つはAPI11以上です。 – irobotxxx

+0

それをトゥイーンに変更すると、正しく動作しますか?これはおそらくAPIレベルのためです。おそらく、古いAPIの場合はtweenを使用し、新しいAPIの場合はflipを使用しますか?または、カスタムフリップアニメーション – QVDev

答えて

1

アンドロイド:PropertyNameはジンジャーブレッドからアニメーションを表示しない、ObjectAnimator(ハニカム+)アニメーションのためだけです。カードフリップアニメーションは、Honeycombアニメーターapiを使用してのみ可能です。私はサポートライブラリのフォークを作成し、フラグメント遷移のためにAnimator APIをNineOldAndroidsから使用できるようにしました。私のgithub projectのanimator-transitionブランチを使用してください。修正されたサポートライブラリを入手したら、http://developer.android.com/training/animation/cardflip.htmlを見て、アニメーターxmlを作成します。

+0

あなたのプロジェクトをEclipseにインポートすることさえできます。数時間(約4時間)連続してやろうとしています。運がない。プロジェクトで何かが間違っているか迷っているときはいつでも。また、あなたのプロジェクトでは、ActionBarSherlockが必要です。これは、サポート-v4を単独で使用します。あなたは、あなたのバージョンのsupportv4 lib(v4/binのような)のコンパイル済みのjarを提供してください。 – Stan

0

xmlにはobjectAnimatorタグ内の値が含まれていて、alphaタグとrotateタグ内には含まれていない必要があります。 objectAnimatorはプロパティ名を指定したpropertyNameを持っています。

関連する問題