未经允许禁止转载
一、共享元素动画拓展
Android共享元素动画是在Android 5.0后的一种转场动画,平时开发者最常用到的就是这个字段transitionName以及常见搭配的代码:
val transitionActivityOptions = ActivityOptions.makeSceneTransitionAnimation(this, Pair(view,transitionName))
startActivity(Intent(this,MainActivity::class.java), transitionActivityOptions.toBundle())
二、功能的拓展
我们常见的共享元素动画有:changeImageTransform,changeClipBounds,changeBounds,fade等等,那么除了这些以外,其实我们可以添加自己自定义的共享元素动画,所以本库加入了ReColor和ReRadius用于文字的颜色RBG动画,以及布局中圆角的半径动画。
<transition class="XXXXXXX"/>
添加到transitionSet下即可
三、拓展库的效果图
四、实现原理:
在SharedElementCallback这个方法分析得到onCaptureSharedElementSnapshot这个方法中,我们可以提取到初始View的各项元素,包括宽高,位置,颜色等等,而生成的结果就是Parcelable,既然等到这个答案,那么我们就可以自行封装这个Parcelable,我们需要在Activity1中提取信息到一个继承了Parcelable的类,并传递到另一个页面。
然后在Activity2中的onCreateSnapshotView和onSharedElementStart中处理我们拿到的内容。具体实现访问Github地址:本拓展库地址
五、快速使用: 在根目录的build.gradle中加入对Jitpack的引用
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
在模块的build.gradle中引入:
dependencies {
implementation 'com.github.ShowMeThe:Transition:1.0.0-release'
}
在项目的res/transition中创建xml:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet android:duration="xxxx" xmlns:android="http://schemas.android.com/apk/res/android">
<transition class="com.show.element.transition.Recolor"/>
<transition class="com.show.element.transition.ReRadius"/>
</transitionSet>
在需要动画的两个Activity中加入setExtraShareElementCallBack() 方法,该方法为拓展方法。