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

我的Android应用动画无法生效,求排查(附代码与动画文件片段)

解决Android页面切换动画不生效的问题

嘿,我帮你瞅了瞅代码,发现动画跑不起来的核心问题是调用顺序搞反了!咱们一步步来修正:

首先修正Java代码的调用顺序

overridePendingTransition()这个方法必须在startActivity()或者finish()之后调用,系统才会触发过渡动画。你之前把它放在了startActivity()前面,这就导致动画根本没被系统识别到。调整后的代码如下:

aboutus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, AboutUsActivity.class);
        startActivity(intent);
        // 先启动新页面,再调用过渡动画
        overridePendingTransition(R.anim.anim_slide_in_bottom, R.anim.anim_slide_out_top);
        finish();
    }
});

补全动画文件的配置

你提供的动画文件片段不完整,得确保两个动画文件的参数配置正确,不然动画效果也会出问题:

anim_slide_in_bottom.xml(新页面从底部滑入)

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="350"
    android:fromYDelta="100%"  <!-- 初始位置在屏幕底部外 -->
    android:toYDelta="0%"      <!-- 最终停在屏幕正常位置 -->
    android:interpolator="@android:anim/decelerate_interpolator"/> <!-- 可选,让动画收尾更平缓 -->

anim_slide_out_top.xml(当前页面从顶部滑出)

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="350"
    android:fromYDelta="0%"    <!-- 初始位置在当前屏幕内 -->
    android:toYDelta="-100%"   <!-- 最终滑到屏幕顶部外 -->
    android:interpolator="@android:anim/accelerate_interpolator"/> <!-- 可选,让动画启动更顺滑 -->

最后再检查两个小细节

  • 确保动画文件都放在res/anim/目录下,文件名和代码里引用的完全一致(比如代码里写的anim_slide_in_bottom,文件名就不能写错);
  • 如果你的项目是AndroidX或者高版本SDK,也可以考虑用ActivityOptions来实现动画,但上面的方法在绝大多数场景下都能正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:34:25