【发布时间】:2014-04-30 16:07:53
【问题描述】:
我正在努力实现以下目标。
我想通过单击 btn1 将活动 2 滑入,并希望通过单击 btn2 再次将活动 2 滑出,如下图所示:
我尝试使用以下 (c#) 代码来执行此操作; java equivelant 应该有点类似:
//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 + slide_1_exit) 运行良好,但是,我不知道如何创建滑出动画 (slide_2_enter + slide_2_exit)。我没有直观地看到退出动画。这可能是由于以下原因:
- MainActivity 可见(z-index:0)。
- StationActivity 使用 btn1.Click 启动,并使用 slide_1_enter 在活动 1 上设置动画。
- StationActivity 可见(z-index:1)
- 当点击 btn2 时,MainActivity 将启动,但它会被置于 StationActivity 的顶部(获取 z-index:3),因此无法看到退出动画 (slide_2_exit)
所以,除非我能够更改活动的“z-index”,否则这将不起作用,对吧?
有解决办法吗?或者有什么其他建议?恐怕让这个工作的“最简单”的方法是使用 viewpager,但我不想实现这个,因为 activity1 已经在 viewpager 中,事情会变得更加复杂。
【问题讨论】:
-
你不能在你的翻译中使用 -100% 作为 toYDelta 在你的翻译中使用 fromYDelta 吗?
标签: c# java android xamarin android-animation