android 共享动画sharedElement经验

核心问题:shareElement共享动画触发时机非常靠前,并且非常短。如果第二个activity开启比较慢(比如app比较大,或者需要异步加载什么的),这会导致动画在第二个activity还没加载好时,便已经执行。直白的说,就是动画出不来。为了保证在动画执行时,第二个activity已经加载好。通常有以下方案。

1. activity实现版

在第二个activity的oncreate()中调用PostponeEnterTransition(),暂停动画执行(在外界看业,就是界面僵死了),在确认第二个activity加载好后,调用 StartPostponedEnterTransition();来继续动画。

2.fragment实现版

同时启动fragment1和fragment2,并且把fragment1设定为show, fragment2设定为hide. 需要动画时,把fragment2设定为true,这样来保证fragment2显示够快。也就是抢时间。

参考下面这个贴子:

Getting Started with Activity & Fragment Transitions

https://www.androiddesignpatterns.com/2014/12/activity-fragment-transitions-in-android-lollipop-part1.html

总之,看样子,目前的安卓,如果要使用共享动画,要踩的坑很多。如果是重要项目,建议先不要上了。

碰到的其它一个问题

fragment使用CoordinatorLayout布局时,不能设置android:fitsSystemWindows="true",否则会导致顶部toolbar出现只能显示一部分的问题,甚至会遗留给上一个fragment,挤压framelayout布局
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值