21

私は現在このチュートリアルを読んでいます:

http://developer.android.com/training/animation/cardflip.html

オンフリップ フラグメントのアニメーション。残念ながら、object-animatorは android.app.Fragment でのみ使用でき、サポート Fragment では使用できません。

スケール アニメーションと回転アニメーションを使用して .xml アニメーションを再構築しようとしました。しかし、今ではアニメーションは実行されず、アニメーション .xml ファイルで設定した時間が経過すると、反転する代わりに別のフラグメントが表示されます。

  • .xml アニメーションの実装を間違えただけですか?
  • それとも、オブジェクト アニメーターなしで 3D フリップ アニメーションを実行することはできませんか?
  • または、サポート Fragment で 3D フリップ アニメーションを実行することはできませんか?

ここに私の.xmlアニメーションがあります:flip_left_in.xml

<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="800"/>

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

flip_left_out.xml

 <set xmlns:android="http://schemas.android.com/apk/res/android" >

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

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

 </set>

Flip_right_in.xml

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

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

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

  </set>

Flip_right_out.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Rotate. -->
<rotate
    android:duration="800"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:propertyName="rotationY"
    android:valueFrom="0"
    android:valueTo="-180" />

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

 </set>

そして、これらが実行されるコードは次のとおりです。

FragmentTransaction trans = getActivity().getSupportFragmentManager().beginTransaction();

trans.setCustomAnimations(R.anim.flip_right_in, R.anim.flip_right_out, 
                           R.anim.flip_left_in, R.anim.flip_left_out);
trans.addToBackStack(null);

trans.replace(R.id.content_frame, new MyFragment()).commit();
4

3 に答える 3

2

ご協力ありがとうございました。

私は自分の問題を解決することができました。解決策は、NineOldAndroidsと、NineOldAndroidsのサポート v4 サポートを備えた別のライブラリに関係しています。

私がしたこと:

  • このライブラリをダウンロードしました: https://github.com/kedzie/Support_v4_NineOldAndroids (これは NineOldAndroids のサポート ライブラリです)
  • ワークスペースにインポートしました
  • NineOldAndroids Library をダウンロードしてワークスペースにインポートしました
  • NineOldAndroids ライブラリを support-v4 ライブラリにインポートしました
  • support-v4-nineoldandroids ライブラリをプロジェクトにインポートしました
  • Filp-Animation を行いました
于 2013-08-29T12:43:39.683 に答える