1.效果(略)
如果没有共享的元素,普通跳转就可以了,一般startActivity后加入一些自定义动画就行。
overridePendingTransition
2.说明
android中Activity之间的跳转,或者Fragment和Activity之间 的跳转等,如果存在内容一样的,例如点击一个带缩略图及标题列表跳转到详情页,就会存在列表中的 缩略图和标题 与 详情页面的图片和标题 是两个界面共有的,则跳转的时候可以考虑使用共享元素转场动画。
3.使用步骤
一,给需要共享的元素设置标志
动态设置:
ViewCompat.setTransitionName(sourceView,"your_tag");
或xml中静态设置:
android:transitionName="your_tag"
二,构建需要传递的共享元素的Options
a.单元素共享
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, shareView, "your_tag");
b.多元素共享
ActivityOptionsCompat options = ActivityOptionsCompat
.makeSceneTransitionAnimation(activity,
new Pair<View,String>(shareView1,"your_tag1"),
new Pair<View,String>(shareView2,"your_tag2")
三,跳转
activity.startActivity(intent,options.toBundle());
4.恐固记忆
一,关键词记忆法:ViewCompat.setTransitionName , ActivityOptionCompat
二,场景记忆法:A跳转到B,通常是startActivity(intent),但发现这个方法还有个重载的方法startActivity(intent,bundleOptions),
于是通过ActivityOptionsCompat封装了一个bundleOptions传给它,A和B界面怎么知道哪几个元素是共享的呢,这就需要给这些共享元素设置一个标识这里是TransitionName,可以通过xml中设置,也可以直接通过ViewCompat.setTransition(View,transitionName)代码动态设置。
tips: 跳转前后需要显示相同内容的的两个View的transitionName必须相同,设置的内容也应相同!