我正在努力实现以下目标。

我想通过单击 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%" 


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!