最近在做MD设计风格的APP,所以在转场动画上当然也得符合MD了。下面就是效果图:
一开始并未了解过这种转场动画,原来是Google在SDK中已经给我们提供了。ActivityOptions
是 Android 5.0 及以上使用的,但是也提供了ActivityOptionsCompat
向下兼容。
下面我们就来看看吧:
layout_item.xml(ListView的item布局):
1 | <?xml version="1.0" encoding="utf-8"?> |
我们会注意到在ImageView里有android:transitionName="photos"
,这正是后面需要用到的。在这里的photos
可以任意取名。也就是说你想让哪个View在转场时表现出动画,就在哪个View的xml中添加android:transitionName
。
之后就是我们点击Item时应该跳转到另一个Activity中(这里就跳转到NewsDetailActivity了),这其中的逻辑如下:
1 | // Android 5.0 使用转场动画 |
可以看到在Android 5.0时使用的makeSceneTransitionAnimation()
方法中的第三个参数正是上面的"photos"
。当然在5.0版本以下我们只能使用兼容的ActivityOptionsCompat
了。
最后在要跳转的Activity的布局中也添加android:transitionName="photos"
,这样就形成了一个MD式转场动画了。
以下是NewsDetailActivity的布局xml(只截取了部分):
1 | <ImageView |
好了,这样就完成了,如果你需要在NewsDetailActivity执行finish时也出现转场动画,你只需要这样做(这里只给出了onBackPressed()
的样例):
1 | @Override |
其实关于ActivityOptions
和ActivityOptionsCompat
转场动画还有更多选择,可以深入研究一下。