美文网首页
共享元素实现列表大图浏览的过度动画(高仿微信朋友圈大图拖拽退出)

共享元素实现列表大图浏览的过度动画(高仿微信朋友圈大图拖拽退出)

作者: 岩浆李的游鱼 | 来源:发表于2018-12-12 10:46 被阅读0次

共享元素小图到大图浏览,即recycleView到viewPager,pager左右滑动,共享动画item改变

(补充功能:高仿微信朋友圈大图查看器,拖拽退出)

:

①、viewPager滑动到当前gridView还没有滑到的item.主动让gridView下滑

②、共享元素滑动改变共享item

③、注意:在网络图片加载中。增加了图片加载进度。解决动画的弊端

(为了效果展示压缩了 展示的gif,有点模糊,请下载观看最佳效果)

项目演示:

一、滑动改变共享item


二、滑动到列表不可见,列表下滑


项目中有2个demo。

demo1:引用的是本地资源,目的是怕时间过久,网络url失效。

demo2:是网络url。此时会有网络问题,图片一时半会加载不除来,此时会有个延缓加载共享动画的机制。同时博主还做了对图片加载进度的操作,有效的避免了这个弊端。如果本文对您有帮助,github请帮忙star下。

在这里单个共享元素动画,博主就不说了。网上一搜一大把

这里主要有2个方法:

1、setExitSharedElementCallback()

2、setEnterSharedElementCallback()

然后着重讲一下。有些时候有需求,动画结束后要进行一些操作。

这里共享动画的监听也是有的。大部分网上的资料都没有提及,代码如下(这个监听应该在后一个activity中):

getWindow().getSharedElementEnterTransition().addListener(new Transition.TransitionListener() {

    @Override

    public void onTransitionStart(Transition transition) {

        LogUtils.i("共享元素动画的实现", "onTransitionStart");

    }

    @Override

    public void onTransitionEnd(Transition transition) {

        LogUtils.i("共享元素动画的实现", "onTransitionEnd");

    }

    @Override

    public void onTransitionCancel(Transition transition) {

    }

    @Override

    public void onTransitionPause(Transition transition) {

    }

    @Override

    public void onTransitionResume(Transition transition) {

    }

});

下面是博主整合的:高仿微信朋友圈大图查看,拖拽退出:


 ●   正常展示:

 ●   支持长图:

 

●   支持gif动图:



●   支持视频:


●   妥善处理好了未加载图:

下面是本人github地址,欢迎star

github传送门

相关文章

网友评论

      本文标题:共享元素实现列表大图浏览的过度动画(高仿微信朋友圈大图拖拽退出)

      本文链接:https://www.haomeiwen.com/subject/nnbonttx.html