web-dev-qa-db-ja.com

Androidアプリケーションですべてのアクティビティ遷移を一度に変更する方法は?

StartActivity()またはfinish()の直後に次のコードを使用してアクティビティ遷移を変更できることを知っています

activity.overridePendingTransition(R.anim.activity_close_enter, R.anim.activity_close_exit);

しかし、アプリに10個のアクティビティがある場合、10回実行する必要があります。変更するのはかなり難しいです。したがって、アプリケーション内のすべてのアクティビティの遷移を一度に設定する方法があるかどうか疑問に思っています。 AndroidManifest.xmlに対応する構成はありますか?

ありがとう!

42
Gen Liu

最初に、次のようにres/styles.xmlに<style>を作成します。

    <style name="YourAnimation.Activity" parent="@Android:style/Animation.Activity"> 
       <item name="Android:windowEnterAnimation">@anim/your_in_down</item>
       <item name="Android:windowExitAnimation">@anim/your_out_down</item>
    </style>

次に、同じファイル内のテーマにスタイルを適用できます。

    <style name="YourTheme" parent="Android:Theme.Translucent">
       ...
       <item name="Android:windowAnimationStyle">@style/YourAnimation.Activity</item>
    </style>

そして最後に、テーマをマニフェストのアクティビティに適用します。

    <activity
        Android:name=".YourActivity"
        Android:theme="@style/YourTheme" />

参照のためにこれらのリンクを見てください:

62
gianpi

私はこれが答えられたことを知っていますが、これは私が私の中でしたことです。 API 14は引き続きサポートされているため、API 22(sli​​de_in_right、slide_out_left)からプロジェクトにプルする必要があったアニメーションがいくつか不足しています。これは、新しいアクティビティを開いたときに画面をスライドさせ、閉じるアクティビティを左にスライドさせることです。もう一度押すと、逆になります。前の画面を左からスライドし、現在の画面を右に閉じます。

<style name="YourTheme" parent="Android:Theme.Translucent">
   ...
    <item name="Android:windowAnimationStyle">@style/YourAnimation.Activity</item>
</style>

<style name="YourAnimation.Activity" parent="@Android:style/Animation.Activity">
    <item name="Android:activityOpenEnterAnimation">@anim/slide_in_right</item>
    <item name="Android:activityOpenExitAnimation">@anim/slide_out_left</item>
    <item name="Android:activityCloseEnterAnimation">@Android:anim/slide_in_left</item>
    <item name="Android:activityCloseExitAnimation">@Android:anim/slide_out_right</item>
</style>
18
JPM

私の解決策は主にJPMの答えのようなものです。しかし、ここにあなたが必要とするかもしれないいくつかの追加ファイルがあります。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorPrimary</item>
    <item name="Android:windowAnimationStyle">@style/CustomActivityAnimation</item>

</style>

<style name="CustomActivityAnimation" parent="@Android:style/Animation.Activity">
    <item name="Android:activityOpenEnterAnimation">@anim/slide_in_right</item>
    <item name="Android:activityOpenExitAnimation">@anim/slide_out_left</item>
    <item name="Android:activityCloseEnterAnimation">@anim/slide_in_left</item>
    <item name="Android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>

Resフォルダーの下にanimフォルダーを作成してから、次の4つのアニメーションファイルを作成します。

slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <translate Android:fromXDelta="100%p" Android:toXDelta="0"
        Android:duration="@Android:integer/config_mediumAnimTime"/>
</set>

slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <translate Android:fromXDelta="0" Android:toXDelta="-100%p"
        Android:duration="@Android:integer/config_mediumAnimTime"/>
</set>

slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <translate Android:fromXDelta="-100%p" Android:toXDelta="0"
        Android:duration="@Android:integer/config_mediumAnimTime"/>
</set>

slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <translate Android:fromXDelta="0" Android:toXDelta="100%p"
        Android:duration="@Android:integer/config_mediumAnimTime"/>
</set>
10
My solution is mostly like of others...
 <style name="YourAnimation.Activity" parent="@Android:style/Animation.Activity">
        <item name="Android:windowEnterAnimation">@anim/slidefromright</item>
        <item name="Android:windowExitAnimation">@anim/slidetoright</item>
    </style>
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="Android:windowAnimationStyle">@style/YourAnimation.Activity </item>
    </style>


</resources>
0
Sahil Bansal