Android:如何与另一个 Activity 进行垂直 Activity 过渡
Android: how to make a vertical Activity transition with another Activity
我的第一个 Activity 中有一个 ListView。当我点击里面的一个项目时,我开始另一个 Activity。好的。但是现在我想修改这两个活动之间的转换:
- Activity1 -> Activity2 : Activity2 从下到上的垂直过渡(进展)
- 当我回到 Activity1 时:Activity2 从上到下的垂直过渡(进度)
更新
我找到了符合我要求的解决方案:
Activity1 -> Activity2
startActivity();
overridePendingTransition(R.anim.from_bottom_to_top, 0);
from_botton_to_top.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="@android:integer/config_shortAnimTime"/>
Activity2 -> Activity1(后退键)
finish();
overridePendingTransition(0, R.anim.from_top_to_bottom);
from_top_to_bottom.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYDelta="0%p" android:toYDelta="100%p"
android:duration="@android:integer/config_shortAnimTime"/>
您将需要使用 anim
。先创建两个xml文件,放入res/anim
from_bottom_to_top.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="100%p"
android:duration="@android:integer/config_shortAnimTime"
/>
</set>
from_top_to_bottom.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:toYDelta="100%p"
android:duration="@android:integer/config_shortAnimTime"
/>
</set>
然后,当您启动 activity(使用 startActivity)时,之后立即调用 overridePendingTransition(int enterAnim, int exitAnim)。
您可以在完成 ActivityB 时实现相同的目的(在 overridePendingTransation 之后立即调用 finish)。
您可以播放动画并创建您的 one/tweak 它们。
使用overridePendingTransition
改变Activity动画。
对于第一种情况,您可以使用:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_top);
第二种情况选择其他动画并调用overridePendingTransition
在 onBackPressed
或 finish
之后。 overridePendingTransition
应该在 activity 完成后立即调用。
如果您正在寻找动画,请查看 google API 示例。
https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/res/anim/
还有很多简单实用的动画xml的。
但是 abc_slide_in_bottom
和 abc_slide_in_bottom
几年前就在 google appcompat 库中。 abc_slide_out_bottom
和 abc_slide_in_top
也是。
我的第一个 Activity 中有一个 ListView。当我点击里面的一个项目时,我开始另一个 Activity。好的。但是现在我想修改这两个活动之间的转换:
- Activity1 -> Activity2 : Activity2 从下到上的垂直过渡(进展)
- 当我回到 Activity1 时:Activity2 从上到下的垂直过渡(进度)
更新
我找到了符合我要求的解决方案:
Activity1 -> Activity2
startActivity();
overridePendingTransition(R.anim.from_bottom_to_top, 0);
from_botton_to_top.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="@android:integer/config_shortAnimTime"/>
Activity2 -> Activity1(后退键)
finish();
overridePendingTransition(0, R.anim.from_top_to_bottom);
from_top_to_bottom.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYDelta="0%p" android:toYDelta="100%p"
android:duration="@android:integer/config_shortAnimTime"/>
您将需要使用 anim
。先创建两个xml文件,放入res/anim
from_bottom_to_top.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="100%p"
android:duration="@android:integer/config_shortAnimTime"
/>
</set>
from_top_to_bottom.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:toYDelta="100%p"
android:duration="@android:integer/config_shortAnimTime"
/>
</set>
然后,当您启动 activity(使用 startActivity)时,之后立即调用 overridePendingTransition(int enterAnim, int exitAnim)。
您可以在完成 ActivityB 时实现相同的目的(在 overridePendingTransation 之后立即调用 finish)。
您可以播放动画并创建您的 one/tweak 它们。
使用overridePendingTransition
改变Activity动画。
对于第一种情况,您可以使用:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_top);
第二种情况选择其他动画并调用overridePendingTransition
在 onBackPressed
或 finish
之后。 overridePendingTransition
应该在 activity 完成后立即调用。
如果您正在寻找动画,请查看 google API 示例。 https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/res/anim/ 还有很多简单实用的动画xml的。
但是 abc_slide_in_bottom
和 abc_slide_in_bottom
几年前就在 google appcompat 库中。 abc_slide_out_bottom
和 abc_slide_in_top
也是。