缩小两个活动之间的过渡动​​画

时间:2012-10-03 18:05:15

标签: android android-animation

我检查了API代码附带的过渡动画,我找到了动画zoom_enter和zoom_exit,其中活动1下沉IN以显示活动2.我需要反过来。我需要活动2从内部缩小并进入顶部。 (我希望你能得到我)。这种类型的动画在iphone屏幕转换时是相同的。

以下代码是我不需要的效果。 这是zoom_enter.xml的代码

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    <scale android:fromXScale="2.0" android:toXScale="1.0"
       android:fromYScale="2.0" android:toYScale="1.0"
       android:pivotX="50%p" android:pivotY="50%p"
       android:duration="@android:integer/config_mediumAnimTime" />
</set>

这是zoom_exit.xml的代码

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:zAdjustment="top">
    <scale android:fromXScale="1.0" android:toXScale=".5"
       android:fromYScale="1.0" android:toYScale=".5"
       android:pivotX="50%p" android:pivotY="50%p"
       android:duration="@android:integer/config_mediumAnimTime" />
    <alpha android:fromAlpha="1.0" android:toAlpha="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

然后在startActivity之后我调用下面的方法:

 overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);

有人可以建议我如何更改上述文件以解释屏幕转换?

2 个答案:

答案 0 :(得分:11)

在zoom_enter.xml中尝试此操作,并从zoom_exit.xml中删除动画。你会看到更好的效果。

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    <scale android:fromXScale="0.0" android:toXScale="1.0"
       android:fromYScale="0.0" android:toYScale="1.0"
       android:pivotX="50%p" android:pivotY="50%p"
       android:duration="@android:integer/config_mediumAnimTime" />
</set>

希望这有帮助。

答案 1 :(得分:2)

overridePendingTransition(zoom_enter_new,zoom_exit_actual);

第一个参数是传入的Activity(所以新的) 第二个参数用于传出活动(实际)

所以如果你想在视频中产生相同效果 实际活动是立即隐藏,而第二个参数需要设置为0(表示没有动画)

overridePendingTransition(zoom_enter_new,0);

为了使新活动像视频一样,这是解释的动画xml资源(res / anim / dir中的zoom_enter_new.xml)

    <set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator">
    <!--scale view fromX fromY are the starting point  (.5 is 50% of scale, )-->
    <!--scale view toX and toY are the final state (1 is 100%)-->
    <!--pivot is the center of animation, so in your case the zoomin on the video is from the exact center (50% pivot x, 50% pivot Y)-->
    <scale android:fromXScale=".5" android:toXScale="1"
        android:fromYScale=".5" android:toYScale="1"
        android:pivotX="50%p" android:pivotY="50%p"
        android:duration="@android:integer/config_longAnimTime" />

    <!-- alpha animation is made at the same time of scale animation, and for me make a better and smooth result, alpha 0 is full trasparent, 1 is the normal state. The final alpha state of the activity after this animation is 1, so pay attention toAlpha must be 1 if you don't want glitch-->
    <alpha android:fromAlpha="0.5" android:toAlpha="1"
        android:duration="@android:integer/config_longAnimTime"/>
</set>

overridePendingTransition(R.anim.zoom_enter_new,0);

托比亚