Phi*_*oda 21 android android-animation android-fragments page-flipping
我目前正在阅读本教程:
http://developer.android.com/training/animation/cardflip.html
关于片段的翻转动画.不幸的是,object-animator只适用于android.app.Fragment,而不支持Fragment.
我尝试使用缩放和旋转动画重建.xml动画.但是现在动画才刚刚执行,在我设置动画.xml文件的时间过去之后,出现了另一个片段,而不是翻转.
这是我的.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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
以下是执行它们的代码:
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();
Run Code Online (Sandbox Code Playgroud)
您可以使用NineOldAndroids。它将 Honeycomb (Android 3.0) 动画 API 向后移植到 Android 1.0。您将获得 ObjectAnimator、ValueAnimator 和所有其他好东西。