Activity过渡动画详解

来源:互联网 发布:mysql alter修改表数据 编辑:程序博客网 时间:2024/06/07 23:20

Android5.x后,Google为Activity设计了丰富的转场动画效果。今天就来研究一下


三种Transition类型


1、进入:一个进入的过渡动画决定activity中的所有视图如何进入屏幕


2、退出:一个退出的过渡动画决定一个activity中的所有视图怎么退出屏幕


3、共享元素:一个共享元素过度动画决定两个activitys之间的过渡会怎么共享他们的视图


进入和退出包括如下三种效果:


explode(分解)-----------从屏幕的中间进入或者退出,移动视图


slide(滑动)-------------从屏幕边缘进入或退出,移动视图


fade(淡出)------------通过改变屏幕上视图的不透明度达到添加或者移除视图


共享元素包括:


changeBounds------------改变目标视图的布局边界


changeClipBounds-------------裁剪目标视图边界


changeTransform--------------改变目标视图的缩放比例和旋转角度


changeimageTransform-------------改变目标图片的大小和缩放比例


了解了上边的动画种类,下面来看看如何使用:




过渡动画的使用

进入退出的使用

比如从A页面跳转到B页面,只需要将startActivity(intent);修改为:startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());

而在B页面,我们只需要添加上如下代码:getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

然后就是设置进入B的具体动画效果了:getWindow().setEnterTransition(new Explode());

同时退出B的动画效果可以通过:getWindow().setExitTransition(new Explode());

其他的效果是同样的方式,不做赘述。后边给出demo源码


共享的使用

所谓共享,顾名思义,肯定要有一个纽带让大家链接上的。那么这个纽带就是transitionName,一定要保证两个共享元素的transitionName命名相同,否则系统是找不到这个共享元素的。

如果只要一个共享元素,在A页面只需要写上:startActivity(intent,ActivityOptions.makeSceneTransitionAnimation(this,view,"share").toBundle());即可增加的两个参数:view就是共享的view,share就是transitionName的命名

如果有多个共享元素,就需要通过Pair.create()来创建多个共享元素,代码如下:

startActivity(intent,ActivityOptions.makeSceneTransitionAnimation(this,
                //创建多个共享元素
                Pair.create(view,"share"),Pair.create(fabs,"fab")).toBundle());


最后补充上demo源码,代码比较简单:https://github.com/loveDeeny/ActivityTransformAniTest

zuihou

1 0
原创粉丝点击