参考
动画框架(4)-共享元素动画和场景切换
Demo
一、介绍
从AActivity跳转到BActivity, 指定的view会有动画
二、实现
1. xml方式
AActivity.java
Intent intent = new Intent(this, BActivity.class);
Pair<View, String> pair1 = new Pair<View, String>(mIv, "这是共享元素tag");
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, pair1, pair2);
startActivity(intent, options.toBundle());
activity_a.xml
<ImageView
android:id="@+id/iv_a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/img"
android:transitionName="这是共享元素tag" />
activity_b.xml
<ImageView
android:id="@+id/iv_b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/img"
android:transitionName="这是共享元素tag" />
2. 代码实现
- 在上级AActivity
setExitSharedElementCallback(new SharedElementCallback() {
@Override
public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
super.onMapSharedElements(names, sharedElements);
sharedElements.put("aaa", mBtn);
}
});
- 下级BActivity
setEnterSharedElementCallback(new SharedElementCallback() {
@Override
public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
super.onMapSharedElements(names, sharedElements);
sharedElements.put("aaa", mTv);
}
});
三、注意
- 关闭界面时, 调用
finishAfterTransition()
才会含有动画