Activity 切换动画(小米图库列表进入详情页,图片从固定位置放大进入,缩小退出)

本文介绍了如何实现从图片列表页到详情页的无缝过渡动画,类似小米图库的效果。通过分析原理,详细讲解了如何传递参数、计算动画参数并在详情页执行进入和退出动画。关键点包括属性动画的应用、视图位置获取以及在`onCreate`中测量视图大小。提供的源码可供下载参考。
摘要由CSDN通过智能技术生成

直接上效果图

这里写图片描述
ok,来分析下如何实现的吧

分析原理

首先确定,这是两个不同的 Activity,从图片列表页跳入到图片详情页;先来看进入详情页时的动画,从列表中所在 item 的位置一直放大到详情页的显示位置,这里我可以先告诉大家,当我们点击了这个 item 的时候,就已经启动了详情页,然后在详情页做相应的动画效果。既然是在详情页做动画效果,就需要在列表页把相应的值传过去,列表页 item 在屏幕上的位置,item 的大小,当然还有图片的资源,然后在详情页计算动画执行的参数。分析了进入动画,那么退出 Activity 的动画就好实现了,跟进入动画相反,但是也是要确定什么时候执行退出动画,这里退出动画也是放在详情页面实现的,当按下返回按钮时,开始执行退出动画,在动画执行完之后,把详情页的 Activity 结束掉;大家会问了,可以把动画放在列表页执行吗?大家仔细想一下就知道,如果是进入动画,肯定是不能的,因为详情页没有启动,有些参数无法知道,比如放大到多大,放大以后的位置是哪里等,但是退出动画是可以的,但比较麻烦,需要把详情页的参数返回给列表页,如果有兴趣可以试着做一下。

效果实现

1、传入详情页的参数获取

            @Override
            public void onItemClick(View view) {
                int location[] = new int[2] ;
                view.getLocationOnScreen(location);
                int resId = (int) view.getTag();
                Bundle bundle = new Bundle() ;
                bundle.putInt("locationX",location[0]);
                bundle.putInt("locationY",location[1]);
                bundle.putInt("width",view.getWidth());
                bundle.putInt("height",view.getHeight());
                bundle.putInt("resId",resId)
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值