转场动画 - 共享元素动画
先看效果:
Activity1点击小图标开启Activity2;
开启Activity2效果就像是小图标放大了填充上去的,关闭Activity2回到Activity1时又像是图片缩小放回去的;
不废话了上代码:
在startActivity方法中加入这段代码;记住 TRANSITIONIMAGE 这个标记
ActivityOptions.makeSceneTransitionAnimation((Activity) mContext,view,"TRANSITIONIMAGE").toBundle()
.setOnClickListener(R.id.icon, new View.OnClickListener() { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public void onClick(View view) { mContext.startActivity(new Intent(mContext, ShopHomeActivity.class) , ActivityOptions.makeSceneTransitionAnimation((Activity) mContext,view,"TRANSITIONIMAGE").toBundle()); } });
Avtivity1中点击的ImageView控件:
添加这个属性:android:transitionName="TRANSITIONIMAGE"
<ImageView android:id="@+id/icon" android:layout_width="38dp" android:layout_height="38dp" android:src="@mipmap/emptyimage" android:scaleType="centerCrop" android:transitionName="TRANSITIONIMAGE" />
Avtivity2中显示的控件也添加这个属性: android:transitionName="TRANSITIONIMAGE"
<RelativeLayout android:layout_width="match_parent" android:layout_height="180dp" android:orientation="vertical" android:background="@mipmap/shopbg" android:transitionName="TRANSITIONIMAGE" > </RelativeLayout>
这样就会有动画效果了,注意有背景色的是同一个值;
这个叫共享元素动画,在使用这个动画的时候,我们需要给Activity1和Activity2中的两个控件分别添加android:transitionName="TRANSITIONIMAGE"属性,并且该属性的值要相同,这样系统才知道是共享元素动画;然后再开启Activity时添加
ActivityOptions.makeSceneTransitionAnimation((Activity) mContext,view,"TAG").toBundle()
这个动画项目中用到了,后续再写其它的转场动画;
取消默认转场动画:
传送门:http://blog.csdn.net/qq_35605213/article/details/79569218