曾经的Android在Activity进行跳转的时候,只是非常生硬的切换,即使通过OverridePendingtransition(int inId,int outId)这个方法给Activity增加一些切换动画,效果也只是差强人意.而在Android 5.X中,Google对动画效果进行了更深一步的诠释,为Activity的转场效果设计了更加丰富的动画效果.
效果晚上下班后补发,GenyMotion蹦了.
Android 5.x提供三种Transition类型:
1.进入:一个进入的过渡动画决定了Activity中的所有的视图怎么进入屏幕.
2.退出:一个退出的过渡动画决定了Activity中的所有的视图怎么退出屏幕.
3.共享元素:一个共享元素过渡动画决定了两个Activities中间的过渡,怎么共享他们的视图.
那么进入和退出动画可以用下面代码去实现:
a中的activity中:
startActivity(intent,ActivityOptions.makeSceneTtransitionAnimation(this),toBundle());b中的activity中:
getWindow().setEnterTransition(new Explode());//进入动画 getWindow().setExitTransition(new Explode());//退出动画
进入,退出动画分为:
explode(分解):从屏幕中间进或者出去,移动视图
slide(滑动):从屏幕边缘进入或者出去,移动视图
fade(淡出):通过改变屏幕上视图的不透明度达到添加或者移除视图
下面是共享元素:
changeBounds:改变目标视图的布局边界
changeClipBounds:裁剪目标视图边界
changeTransform:改变目标视图的缩放比例和旋转角度
changeImageTransform:改变目标图片的大小和缩放比例
使用方式:
我们需要在XML文件中将需要共享的控件命名.命名必须要一样,例如我在a中的Button取名为"one"那么b中的Button取名就需要为"one",那么当activity跳转的时候会自动找到相同名字的控件,进行对应的共享动画.
android:transitionName="XXX"然后在启动第二个activity的时候需要:
startActivity(intent,ActivityOptions.makeSceneTransitionAnimation(this,view,"share").toBundle());//这里的share就是自己命名.
GitHub地址:项目地址