93

ロゴ アクティビティとメイン アクティビティの間のトランジション効果を成文化していますが、アクティビティが消える前に一番上に移動するという問題があります。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <alpha
        android:duration="2000"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" >
    </alpha>

</set>

このコードを改善して、消失効果のみを得るにはどうすればよいですか?

4

4 に答える 4

252

独自の.xml アニメーション ファイルを作成して、新しいActivityをフェード インし、現在の をフェード アウトすることができActivityます。

fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
           android:interpolator="@android:anim/accelerate_interpolator"
           android:fromAlpha="0.0" android:toAlpha="1.0"
           android:duration="500" />

フェードアウト.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
           android:interpolator="@android:anim/accelerate_interpolator"
           android:fromAlpha="1.0" android:toAlpha="0.0"
           android:fillAfter="true"
           android:duration="500" />

次のようなコードで使用しますActivity

Intent i = new Intent(this, NewlyStartedActivity.class);
startActivity(i);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

上記のコードは、現在アクティブなものActivityをフェードアウトし、新しく開始したものをフェードインしてActivity、スムーズな移行を実現します。

更新: @Dan J は、組み込みの Android アニメーションを使用するとパフォーマンスが向上することを指摘しました。組み込みのアニメーションを使用する場合は、次を使用します。

overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

リソース ID にアクセスするandroid.R代わりに参照していることに注意してください。R

更新: 現在では、API レベル 19 で導入された Transition クラスを使用して遷移を実行することが一般的になっています。

于 2013-08-27T21:38:21.057 に答える
19

overridePendingTransition が一部のモバイルで機能しないか、デバイスの設定に依存するため、以下のような onCreate メソッドでアクティビティにアニメーションを追加することもできます...

View view = findViewById(android.R.id.content);
Animation mLoadAnimation = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_in);
mLoadAnimation.setDuration(2000);
view.startAnimation(mLoadAnimation);
于 2014-02-26T08:08:06.553 に答える
18

このコードをstyle.xmlファイルでも使用できるため、 activity.javaに他に何も記述する必要はありません。

<!-- 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/colorAccent</item>
    <item name="android:windowAnimationStyle">@style/AppTheme.WindowTransition</item>
</style>

<!-- Setting window animation -->
<style name="AppTheme.WindowTransition">
    <item name="android:windowEnterAnimation">@android:anim/fade_in</item>
    <item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>
于 2018-02-16T05:54:04.253 に答える