Activity过渡动画
提供了三种Transition类型的动画
进入
决定activity中的所有视图怎么出现在屏幕
进入效果包括:
explode(分解)
slide(滑动)
fade(淡出)
退出
决定activity中的所有视图怎么消失在屏幕
退出效果:同上
进入和退出效果的demo
//进入效果
getWindow().setEnterTransition(new Explode());
getWindow().setEnterTransition(new Slide());
getWindow().setEnterTransition(new Fade());
//退出效果
getWindow().setExitTransition(new Explode());
getWindow().setExitTransition(new Slide());
getWindow().setExitTransition(new Fade());
//使用startActivity(new Intent(), ActivityOptions.makeSceneTransitionAnimation(this).toBundle())代替startActivity(intent)即可
startActivity(new Intent(), ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
//在被打开的Activity中需要设置如下代码
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
//或在样式中
<item name="android:windowContentTransitions">true</item>
共享元素
决定两个activity之间的过渡,怎么共享它们的视图
共享元素:
changeBounds:改变目标视图的布局边界
changClipBounds:裁剪目标视图的边界
changeTransform:改变目标视图的缩放比例和旋转角度
cahngeImageTransfrom:改变目标图片的大小和缩放比例
demo:
//通过android:transitionName确定那一个是被共享的元素
<ImageView
android:id="@+id/iv"
android:src="@mipmap/ic_launcher"
android:transitionName="iv"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
//取得该控件
iv = (ImageView) findViewById(R.id.iv);
//startactivity方法中makeSceneTransitionAnimation(Context,被共享的view,transitionName);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,iv,"iv").toBundle());
//如果有多个共享元素可以通过Pair.create(view,name)来实现
Pair<View, String> p1 = Pair.create((View)iv, "iv");
Pair<View, String> p2 = Pair.create((View)iv2, "iv2");
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,p1,p2).toBundle());
需求:不同的页面设置不同的效果
//通过设置intent的flag来设置不同的动画效果,在被打开的activity中通过flag来设置动画效果
intent.putExtra("flag",0);
getIntent().getIntExtra("flag",default code);
switch(code){//参考进入和退出效果的内容}