Activity过渡动画之ActivityOptionsCompat

  • 内容
  • 评论
  • 相关

前言

在Android 5.0之前,我们可以使用overridePendingTransition来改变Activity的过渡动画,在5.0以后,Google为我们添加了共享元素动画等新的过渡动画,为了简化开发者的适配,Google推出了ActivityOptionsCompat,通过ActivityOptionsCompat我们可以指定共享元素动画等,在5.0以上有效,5.0以下则使用默认效果,这样无疑简化了很多步骤,下面就来介绍下如果使用ActivityOptionsCompat

ActivityOptionsCompat常用方法

查看ActivityOptionsCompat的源码可以发现其提供了很多静态方法

但是根据我测试只有makeCustomAnimation、makeScaleUpAnimation、makeClipRevealAnimation、makeSceneTransitionAnimation的效果比较常用。

makeCustomAnimation

使用方式如下,效果类似于overridePendingTransition,可以改变Activity的过渡动画

makeScaleUpAnimation

设置新Activity在指定位置指定大小缩放到全屏,下面的例子是让Activity从被点击的View中间开始放大,不过有一个缺陷就是退出Activity不会缩放到被点击的View

makeThumbnailScaleUpAnimation

按照文档解释是类似于makeScaleUpAnimation,只不过是放大一个图片,但是测试发现效果很奇怪,同样的,退出Activity的时候动画不可逆

makeClipRevealAnimation

新Activity从指定的位置从中心慢慢放大到全屏,同样的,退出Activity的时候动画不可逆

共享元素过渡动画

对于共享元素过渡动画ActivityOptionsCompat提供了两个方法,分别作用与一个控件或者同时作用与多个控件。

对于共享元素动画,首先要知道两个Activity之间哪些元素是被共享的。有两种方式指定

1、android:transitionName指定

在新Activity的指定控件的xml中使用android:transitionName指定一个标记

2、ViewCompat.setTransitionName

在新Activity的onCreate中使用ViewCompat.setTransitionName手动设置transitionName

单独一个元素

使用共享元素过渡动画需要指定View以及新Activity中目标View的transitionName,transitionName设置方法上面已经介绍过了

多个元素

要想在多个元素上面使用共享元素动画,需要使用Pair指定View以及transitionName,下面的例子中只使用了一个元素,可以传递多个Pair

参考链接:

https://developer.android.com/reference/android/support/v4/app/ActivityOptionsCompat

https://www.cnblogs.com/tianzhijiexian/p/4087917.html

测试代码地址:

https://github.com/CB2Git/ActivityOptionsTest

评论

0条评论

发表评论

电子邮件地址不会被公开。