如何去除 Activity 启动时的默认动画

在开发产品的过程中,遇到了需要去除 Activity 启动时的默认动画的需要。

Activity 的动画,如果 Activity 是自己可控的,那么一般的处理方式是两步。首先重写 Activity 的 Theme 中的 windowAnimationStyle 相关属性,并保存在 res/values/styles.xml

其次在不想有动画的 Activity 上设置此属性,

这个方法,姑且称之为方法一吧,来自于 https://blog.51cto.com/u_1472521/5138835。但测试发现没有奏效,也许跟要启动的 Activity 是透明的有关。

接着找到的是方法二,要利用 overridePendingTransition()。在 Activity 中使用它来控制两个 Activity 切换时的动画。有两个参数:进入动画和出去的动画。

注意:
1、必须在 startActivity()  或 finish() 之后立即调用;
2、而且在 2.1 以上版本有效;
3、手机设置-显示-动画,为开启状态。

但这个是要求调用者明确指定,跟需求场景中调用者是系统启动器的情况偏离更大,作为开发者,没办法把这样的代码增加到启动器的行为里。最后发现了方法三,在这儿:https://www.orcode.com/question/1254347_k20608.html(这个网站可能是个农场,我没细看),其实就一句话:intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);。在创建快捷方式时,把这个标志加入到启动目标 Activity 的 Intent 里就好。不过后来查看更多的信息时,有提到这个标志可能会有副作用,具体请参看这儿:https://www.semicolonworld.com/question/47373/disable-activity-slide-in-animation-when-launching-new-activity(其实这个页面我就没再细看了,毕竟问题已经解决了,有需要时再看,留此备档)。

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注