【问题标题】:Slide up activity上滑活动
【发布时间】:2023-03-11 09:24:01
【问题描述】:

我有一个活动和另一个活动。 当我向上滑动屏幕时,我希望我的第一个活动结束。动画应该就像活动也向上滑动一样。就像通知屏幕一样。 那可能吗?在发布此问题之前,我已经进行了多次 Google 搜索,但没有得到任何结果。

P.S - 我不希望这被视为一个随意的问题,因为没有显示代码。我只需要一点开始,我完全感到困惑。

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    在 res-> 中创建一个动画文件夹

    在anim文件夹slide_up_info.xml中创建一个xml文件

    <set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="500"
        android:fromYDelta="100%p"
        android:toYDelta="0" />
    </set>
    

    slide_down_info.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="500"
        android:fromYDelta="0%p"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toYDelta="100%p" />
    </set>
    

    no_change.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromYDelta="0%p" android:toYDelta="0" android:duration="500"/>
    </set>
    

    现在当你想活跃起来时,写下面的代码

    Intent intent_info = new Intent(MainActivity.this,ToActivity.class);
    startActivity(intent_info);
    overridePendingTransition(R.anim.slide_up_info,R.anim.no_change);
    

    用于向下Activity动画

    Intent intent_home=new Intent(getApplicationContext(), MainActivity.class);
    startActivity(intent_home);
    overridePendingTransition(R.anim.no_change,R.anim.slide_down_info);
    

    【讨论】:

    • 我无法理解一件事。最后一段代码,它的作用是什么?
    • 对于向下活动动画,您可以编写最后一个块代码。测试过你的意图,你能完成()并且过度依赖
    • 这就像我需要的那样工作,但是它可以更流畅;有什么办法可以得到真正平滑的滑动效果?
    • @PankajAndroid:应该是 overridePendingTransition(R.anim.slide_down_info,R.anim.no_change);
    • 为了平滑,使用插值器。例如schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator" >
    【解决方案2】:

    可以使用OverridePendingTransition 将动画引入Activity Launch。看看这个例子,他们展示了一个示例代码。 Animation between activities

    要结束一个活动,您可以在第一个活动上调用finish()

    有关上滑的知识,可以查看onFling from GestureDetector or onTouch from OnTouchListener

    【讨论】:

    • 他为什么要调用finish()?他正在使用 startActivity 启动一个新 Activity,不是吗?
    • 来自@rockydgeekgod 问题“我希望我的第一个活动在我向上滑动屏幕时结束”我假设他想关闭第一个活动并将其从后堆栈中删除。如果他不想完成它并想导航回来,那么就不需要finish()。
    【解决方案3】:

    您也可以这样做:在您的动画中,覆盖 onAnimationEnd 方法,并在其中使用 startActivity 在动画结束后启动您的新活动

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      相关资源
      最近更新 更多