Android转场动画在异步加载页面遇到的坑

从android5.0开始系统引入了非常酷炫的转场动画,如何实现请自行google,网上的例子一大把,但是说的都是一些静态资源View,本人在做一个类似app自带图库例子时,当子页面中的图片需要从网络下载时,发现效果跟想象中的不一样。如下图所示:

图一

可以看到当点击后,图片并没有那种慢慢放大的流畅感,图片是一闪就放大了。其实我们仔细想想的话,也会觉得这样做是行不通的,因为跳到第二个页面时,图片需要从网络再次加载。这时候图片可能还没下载完成,所以渲染后的界面是不能预期的。

经过一段时间摸索后发现了Activity的两个神奇api,android.app.Activity#postponeEnterTransition和android.app.Activity#startPostponedEnterTransition,看看这两个api的Javadoc。

图2

就像这两个api描述的那样,看起来正式我们需要的。二话不说,把这两个api用起来看看效果先。

1、在子页面的Activity.onCreate方法中加入supportPostponeEnterTransition();

图3

2、在图片加载回调方法中调用supportStartPostponedEnterTransition();

图4

注意:这里使用的supportPostponeEnterTransition和supportStartPostponedEnterTransition方法是AppCompatActivity提供的兼容方法。兼容API 21以下的系统。

OK,跑一下看看效果吧。Good!!!


图5
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,990评论 25 709
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 47,041评论 22 665
  • 很多事情,当我们尝到其中的喜悦,定是再也放不下,像上瘾了一样地迷恋和追随。 我在学习形象管理的过程中感知到的细节,...
    美生活阅读 2,622评论 4 1

友情链接更多精彩内容