3

API コードに付属のトランジション アニメーションを調べたところ、アクティビティ 1 がシンクしてアクティビティ 2 を表示するアニメーション zoom_enter と zoom_exit が見つかりました。逆の方法が必要です。内側からズームアウトして上に来るには、アクティビティ 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);

上記のファイルを変更して、説明した画面遷移を行う方法を誰か提案できますか?

4

2 に答える 2

13

これを 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>

お役に立てれば。

于 2013-02-12T12:20:21.363 に答える
2

overridePendingTransition(zoom_enter_new, zoom_exit_actual);

最初のパラメータは着信アクティビティ用です(新しい) 2 番目のパラメータは発信アクティビティ用です(実際の)

したがって、実際のアクティビティが即座に非表示になるように見えるビデオと同じ効果を作りたい場合は、2 番目のパラメータを 0 に設定する必要があります (アニメーションがないことを意味します)。

overridePendingTransition(zoom_enter_new, 0);

そして、ビデオのような新しいアクティビティ zoomin を作成するために、これは anim 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);

トビア

于 2017-05-16T09:07:26.900 に答える