0

私はAndroidでフリッピングアニメーションを作ろうとしています。 は、私はこのコードを使用しています:Flip Up Animation

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Set alpha to 0 before animation --> 
    <objectAnimator 
    android:valueFrom="1.0" 
    android:valueTo="0.0" 
    android:propertyName="alpha" 
    android:duration="0"/> 

    <!-- Rotate --> 
    <objectAnimator 
    android:valueFrom="180" 
    android:valueTo="0" 
    android:propertyName="rotationY" 
    android:interpolator="@android:interpolator/accelerate_decelerate" 
    android:duration="@integer/card_flip_time_full"/> 

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

をしかし、私はそれが上から下に反転します。このような何か:私はこれを行うにはどうすればよい

Flip

+0

アンドロイドからpropertyNameのを変更してみてください:プロパティ名= "rotationY" アンドロイドに:プロパティ名= "れるrotationX" –

+0

@InnocentKithinjiをしようとしました。助けにならない。 – amitairos

+0

これは2Dアニメーションですか、3Dアニメーションですか? 2Dアニメーションには、プリレンダリングされたフレーム(FrameAnimation)のセリフが必要です。 3Dアニメーションは、リアルタイムでオブジェクトをレンダリングする必要があります(OpenGL、Rajawalyなど)。 –

答えて

1

プログラムで行うことができます。ここにXamarinのC#があります。今すぐJavaをテストすることはできませんが、それは非常に似ています。

ImageView block = FindViewById<ImageView>(Resource.Id.imgBlock); 
ObjectAnimator blockSpin = ObjectAnimator.OfFloat(block, "rotationX", 0, 360); 
imageCard.PivotX = 0.5f; //so it spins on center 

float scale = metrics.Density; 
imageCard.SetCameraDistance(8000*scale); 
    /*Set camera distance as required to avoid distortion. 
    Multiplying by scale keeps distance the same across devices. */ 
blockSpin.SetDuration(500); 
blockSpin.Start(); 
+0

うわー、素敵!それは私の問題を正確には解決しませんが、フリップされたオブジェクトの反対側に、別のビューまたは少なくとも白い背景が表示されます。これはちょうど回転した同じビューが反対側に表示されます。任意のアイデアはどのようにこれを完璧にする? – amitairos

+0

さて、私は回転を90度に設定しました。もう片面は見えません。アニメーションの最後には、「下にある」ものが見えます。ありがとう!! – amitairos