1. ホーム
  2. android

[解決済み] Activityのトランジションでフェードアニメーションを行うには?

2023-03-01 09:31:42

質問

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

<?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>

このコードを改良して、バニッシュ効果だけを得るにはどうしたらよいでしょうか?

どのように解決するのですか?

自分で .xml アニメーションファイル でフェードインさせ、新しい Activity をフェードアウトさせ、現在の Activity :

フェードイン.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);

私が参照する android.R ではなく R でリソースIDにアクセスできるようになります。

アップデイト : 現在では、遷移は トランジションクラスは API レベル 19 で導入されました。 .