You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Android 切换Activity时如何禁止指定元素播放过渡动画?

解决方案

方案1:改用单Activity + 多Fragment架构(最推荐)

你的两个页面共用顶部ActionBar和底部导航栏,天然适合单Activity架构:

  • 保留一个主Activity,布局固定包含顶部ActionBar、底部导航按钮,中间区域用FragmentContainerView承载内容
  • 原来的「应用列表页」和「设置页」分别改造为独立Fragment
  • 点击底部按钮时,仅做Fragment的切换动画,顶部和底部控件固定在Activity中,完全不会参与过渡动画,不会产生额外动效

方案2:保留双Activity架构,使用共享元素过渡

如果不想改现有架构,可通过Android的共享元素转场实现需求,步骤如下:

  1. 给两个Activity布局里的ActionBar和底部按钮设置相同的transitionName属性:
    <!-- 两个Activity的ActionBar都添加该属性 -->
    <androidx.appcompat.widget.Toolbar
        android:id="@+id/action_bar"
        android:transitionName="shared_action_bar"
        ... />
    
    <!-- 两个Activity的底部导航栏都添加该属性 -->
    <LinearLayout
        android:id="@+id/bottom_nav"
        android:transitionName="shared_bottom_nav"
        ... />
    
  2. 修改跳转代码,携带共享元素参数:
    findViewById<Button>(R.id.setting_button).setOnClickListener {
        val intent = Intent(this, SettingActivity::class.java)
        // 绑定共享元素
        val options = ActivityOptionsCompat.makeSceneTransitionAnimation(
            this,
            Pair.create(findViewById(R.id.action_bar), "shared_action_bar"),
            Pair.create(findViewById(R.id.bottom_nav), "shared_bottom_nav")
        ).toBundle()
        startActivity(intent, options)
    }
    
  3. 给两个Activity设置转场主题,在res/values/styles.xml中添加:
    <style name="AppTransitionTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <item name="android:windowActivityTransitions">true</item>
        <!-- 自定义中间内容的过渡动画,可根据需求调整 -->
        <item name="android:windowEnterTransition">@android:transition/slide_right</item>
        <item name="android:windowExitTransition">@android:transition/slide_left</item>
    </style>
    
  4. 将两个Activity的主题指定为上面的AppTransitionTheme即可。

注意事项

  • 共享元素方案需要保证两个Activity的ActionBar、底部导航栏的样式完全一致,否则过渡时会出现突兀的变化
  • 共享元素转场最低支持Android 5.0(API 21),如果你的App需要兼容更低版本,只能选择方案1

内容的提问来源于stack exchange,提问作者greg1982

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:54:06