我正在努力实现以下目标。
我想通过单击 btn1 将 Activity 2 滑入,并通过单击 btn2 再次将 Activity2 滑出,如下图所示:
我尝试使用以下(c#)代码来做到这一点; java 等价物应该有点类似:
//MainActivity
btn1.Click += (object sender, EventArgs e) => {
var stationActivity = new Intent(_mainActivity, typeof(StationInfoActivity));
StartActivity(stationActivity);
_mainActivity.OverridePendingTransition(Resource.Animation.slide_1_enter, Resource.Animation.slide_1_exit);
//I have a reference to the _mainActivity since this activity is technically a fragment
};
//StationActivity
btn2.Click += (object sender, EventArgs e) => {
var mainIntent = new Intent(this, typeof(MainActivity));
StartActivity(mainIntent);
this.OverridePendingTransition(Resource.Animation.slide_2_enter, Resource.Animation.slide_2_exit);
};
以及以下资源文件:
//slide_1_enter
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="@android:integer/config_shortAnimTime"/>
//slide_1_exit
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0%p" android:toYDelta="0%p"
android:duration="@android:integer/config_longAnimTime" />
//slide_2_enter
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0%p" android:toYDelta="0%p"
android:duration="@android:integer/config_longAnimTime" />
//slide_2_exit
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0%p" android:toYDelta="100%p"
android:duration="@android:integer/config_longAnimTime" />
滑入(slide_1_enter + slip_1_exit)工作正常,但是,我不知道如何创建滑出动画(slide_2_enter + slip_2_exit)。我看不到退出动画。这可能是由于以下原因:
- MainActivity 可见(z 索引:0)。
- StationActivity 通过 btn1.Click 启动,并使用 Slide_1_enter 在 Activity 1 上设置动画。
- StationActivity 可见(z-index:1)
- 当点击 btn2 时,MainActivity 将启动,但它会被放置在 StationActivity 之上(获取 z-index:3),从而阻止看到退出动画 (slide_2_exit)
所以,除非我能够更改 Activity 的“z-index”,否则这将不起作用,对吗?
有解决办法吗?或者还有其他建议吗?恐怕“最简单”的方法是使用viewpager,但我不想实现这个,因为activity1已经在viewpager中,事情会变得更加复杂。
请您参考如下方法:
当覆盖按钮 1 的转换时,调用“幻灯片”动画。当您按下按钮 2 时,调用“滑出”动画,该动画与滑入相反。即滑入将有:
fromYDelta="-100%"
toYDelta="0%"
滑出会有:
fromYDelta="0%"
toYDelta="-100%"