【发布时间】:2018-12-20 19:58:55
【问题描述】:
我可以使用交换动作而不是默认动作来打开一个 android 活动吗? 默认情况下,当我从另一个 Activity 调用一个 Activity 时,新的 Activity 会从中间打开,并且会增长到与屏幕尺寸相匹配,我希望我的应用程序中的 Activity 从侧面打开并覆盖它们之前的 Activity。
有可能吗?
【问题讨论】:
我可以使用交换动作而不是默认动作来打开一个 android 活动吗? 默认情况下,当我从另一个 Activity 调用一个 Activity 时,新的 Activity 会从中间打开,并且会增长到与屏幕尺寸相匹配,我希望我的应用程序中的 Activity 从侧面打开并覆盖它们之前的 Activity。
有可能吗?
【问题讨论】:
是的,你可以通过自定义动画来做到这一点,就像我在这里所做的那样:
将activity_push_up_in.xml 放入你的动画文件夹:-
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromYDelta="100%p"
android:toYDelta="0" />
</set>
现在,将另一个 xml push_up_out.xml 再次放入您的 anim 文件夹中:-
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromYDelta="0"
android:toYDelta="-100%p" />
</set>
现在将此代码放入您的 java 文件中以使用此动画开始活动:-
overridePendingTransition(R.anim.activity_push_up_in, R.anim.push_up_out);
【讨论】:
简短回答:是的,有可能
在 API 级别 5 中,您可以调用 overridePendingTransition 方法指定显式过渡动画。
startActivity();
overridePendingTransition(R.anim.hold, R.anim.some_animation);
您当然需要创建您希望在动画 xml 中使用的动画。
【讨论】:
使用这个
overridePendingTransition(0, android.R.anim.slide_out_right);
【讨论】:
您需要使用动画并在启动新 Activity 时覆盖当前动画。 看看这个答案Slide right to left Android Animations
【讨论】:
就像我做的那样:
put activity_push_up_in.xml in your anim folder :-
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="200"
android:fromYDelta="100%p"
android:toYDelta="0" />
</set>
now, put another xml push_up_out.xml again in your anim folder :-
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="200"
android:fromYDelta="0"
android:toYDelta="-100%p" />
</set>
Now put this code in your java file to start intent activity with this animation :-
overridePendingTransition(R.anim.activity_push_up_in, R.anim.push_up_out);
【讨论】: