我使用以下代码通过自定义动画显示新活动。新活动从屏幕底部出现并移至顶部,旧活动淡入。
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>
淡入淡出.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>