Android:共享元素动画拓展

一、共享元素动画拓展

Android共享元素动画是在Android 5.0后的一种转场动画,平时开发者最常用到的就是这个字段transitionName以及常见搭配的代码:

val transitionActivityOptions = ActivityOptions.makeSceneTransitionAnimation(this, Pair(view,transitionName))
startActivity(Intent(this,MainActivity::class.java), transitionActivityOptions.toBundle())

二、功能的拓展

我们常见的共享元素动画有:changeImageTransformchangeClipBoundschangeBoundsfade等等,那么除了这些以外,其实我们可以添加自己自定义的共享元素动画,所以本库加入了ReColorReRadius用于文字的颜色RBG动画,以及布局中圆角的半径动画。

<transition class="XXXXXXX"/>

添加到transitionSet下即可

三、拓展库的效果图

四、实现原理:

SharedElementCallback这个方法分析得到onCaptureSharedElementSnapshot这个方法中,我们可以提取到初始View的各项元素,包括宽高,位置,颜色等等,而生成的结果就是Parcelable,既然等到这个答案,那么我们就可以自行封装这个Parcelable,我们需要在Activity1中提取信息到一个继承了Parcelable的类,并传递到另一个页面。
然后在Activity2中的onCreateSnapshotViewonSharedElementStart中处理我们拿到的内容。

五、快速使用: 在根目录的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() 方法,该方法为拓展方法。

猜你喜欢

转载自blog.csdn.net/zhireshini233/article/details/115189639