activity 转场动画不生效_Activity 转场动画踩坑

本文介绍了在Android中实现Activity转场动画的两种方法:通过`overridePendingTransition()`和`android:windowAnimationStyle`。详细讨论了各自的优缺点以及在不同设备上的表现,包括兼容性问题和黑屏现象。并提供了相关动画资源文件的示例代码。
摘要由CSDN通过智能技术生成

目标效果

ef3ec9b987b9aa7d8a92dd605c56477e.gif

页面出现的效果是自下向上滑入,消失的效果是自上向下滑出,时长、速度未知。

实现方案

为表述方便,我们假设由 Activity A 打开 Activity B。

Activity#overridePendingTransition()

A 页面不变,B 页面出现,在 Activity A 中 startActivity() 后面添加代码:

overridePendingTransition(android.R.anim.slide_in_up, R.anim.anim_hold);

注意,如果第二个参数为 0,切换时未出现黑色背景。

slide_in_up.xml

slide_out_down.xml

anim_hold.xml

A 页面不变,B 页面消失的动画,是在 Activity B 中 finish() 后面添加代码:

overridePendingTransition(0, android.R.anim.slide_out_down);

效果(锤子 t2 和 华为 mate 9 pro):

4e154d31bbcf97ae6c57124107c60723.gif

图1

优势:兼容性好,没有版本和机型的限制;

劣势:如果 B 页面的入口较多,则每个入口页面都要添加动画代码。

android:windowAnimationStyle

该方式纯靠 xml 文件完成,而不借助 Java 代码。

具体有两种形式,一个是控制 Activity 动画的,一种是控制 Window 动画的。我们先看第一种。

styles.xml

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

@style/MyActivityTransitionAnimation

@anim/slide_in_up

@anim/anim_hold

@anim/slide_out_down

@anim/anim_hold

AndroidManifest.xml

效果(锤子 t2,5.1.1 安卓系统):

592e805fccd1a2059011c0390a721eee.gif

图2

效果(mate 9 pro,8.0 安卓系统):

906bc4aa9a1d96302eb915e5b643be07.gif

图3

即控制 Activity 动画的方式有兼容性问题,在某些机型上某个或全部属性均失效。

再来试下控制 Window 的动画。

styles.xml

AndroidManifest.xml

效果(锤子 t2):

08f67b6adfb5b08c5252b9af7433eb0e.gif

图4

效果(mate 9 pro):

a0c7568c9ebbf5d3dc164307b1cf57cf.gif

图5

可以看到,除了黑屏问题,在 mate 9 pro 上同样存在 exit 属性失效的问题。

优势:只设置目标 Activity 接口,不需要在每个入口页面都设置一遍

劣势:兼容性不好,在某些机型上存在属性失效的问题

而且,上面的兼容性还未考虑 Activity 的启动模式,不知道在这方面会不会也有坑。

参考文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值