次のコードを使用して、カスタムアニメーションで新しいアクティビティを表示します。新しいアクティビティが画面の下から上に表示され、古いアクティビティがフェードインします。
startActivity(intent);
overridePendingTransition(R.anim.slide_in_up, R.anim.fade_in);
slide_in_up.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="100%"
android:toYDelta="0%"
android:duration="@android:integer/config_shortAnimTime"/>
</set>
およびfade_in.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="1.0"
android:toAlpha="0.5"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
問題は、アクティビティが表示されて上昇すると、移動中にその上に白い縞模様のアーティファクトまたはテールがあり、すぐに消えてしまうことです。
SDK 8用に開発しています。奇妙なことに、Android 4.1.2でアプリを実行すると、移行中にアーティファクトは発生しませんが、以前のすべてのバージョンではアーティファクトが発生します。
反対方向のアニメーションは機能します
反対方向にslide_in_up.xmlを設定すると:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:fromYDelta="-100%"
android:toYDelta="0%"
android:duration="@android:integer/config_shortAnimTime"/>
</set>
移行は非常にうまく機能します。
私が起動するアクティビティのレイアウトは次のとおりです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/black"
android:gravity="fill_vertical" >
<Button
android:id="@+id/goHomeButton"
style="@style/HeaderTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/comparison_title" />
</RelativeLayout>
<ListView
android:id="@+id/listViewComparison"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray"
android:cacheColorHint="@color/transp"
android:divider="@null"
android:listSelector="@color/transp" >
</ListView>
</LinearLayout>