相信大家对于Activity的过度动画都很熟悉了,一般情况下我们直接使用
- 1
- 1
但是这种老旧、生硬的方式怎么能适合我们的MD风格的App呢!好在google在新的sdk中给我们提供了另外一种Activity的过度动画——ActivityOptions
。并且提供了兼容包——ActivityOptionsCompat
。这篇博客我们就是来了解下这个新的activity过度机制。
一、 简介
ActivityOptionsCompat
是一个静态类,提供了为数不多的几个方法,下面我们来罗列一下:
1.
ActivityOptionsCompat.makeCustomAnimation(Context context, int enterResId, int exitResId)
2.
ActivityOptionsCompat.makeScaleUpAnimation(View source,int startX, int startY, int startWidth, int startHeight)
3.
ActivityOptionsCompat.makeThumbnailScaleUpAnimation(View source,Bitmap thumbnail, int startX, int startY)
4.
ActivityOptionsCompat.makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName)
5.
ActivityOptionsCompat.makeSceneTransitionAnimation(Activity activity,Pair<View, String>… sharedElements)
恩,就这5个方法可以调用,也就是说为我们提供了这么5中过度方式,在使用的时候我们需要在theme指定:
- 1
- 2
- 3
- 1
- 2
- 3
接下来我们就一一进行了解一下。
二、 makeCustomAnimation
makeCustomAnimation
这个很简单,从参数中我们可以发现,这个和overridePendingTransition
非常类似,确实,在实现效果上和overridePendingTransition
也是相同的。
下面就一段代码演示一下效果:
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
三个参数,第一个是指当前activity,第二个和第三个参数分别是进入动画和退出动画,需要注意的是我们启动activity的方式是使用ActivityCompat.startActivity,最后一个参数我们使用compat.toBundle。
来看看目标的activity,
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15