Transition Animation是什么?
Android TransitionAnimation是Android 5.0 之后用于Activity之间的过渡动画效果。
效果图
使用Transition Animation
从FirstActivity启动SecondActivity首先需要 1,在SecondActivity的Layout文件中给您想要有Transition效果的View设置一个android:transitionName="@string/transitionName 属性。 2,然后在FirstActivity中创建一个Pair 数组,调用ActivityOptionsCompat.makeSceneTransitionAnimation() 方法。 最后ActivityCompat.startActivity()
给View设置android:transitionName 属性
我这里图方便,就直接在根布局设置了
// 这个属性一定要设置
android:transitionName="@string/transitionName"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/background" />
private void startQuizActivityWithTransition() {
View translationView = findViewById(R.id.transitionView);
// 1
final Pair[] pairs = TransitionHelper.createSafeTransitionParticipants(this,false,new Pair<>(translationView,getString(R.string.transitionName)));
// 2
@SuppressWarnings("unchecked")
final Bundle transitionBundle = ActivityOptionsCompat
.makeSceneTransitionAnimation(this,pairs)
.toBundle();
Intent intent = new Intent(this,Main2Activity.class);
// 3
ActivityCompat.startActivity(this,intent,transitionBundle);
}</code></pre>
TransitionHelper.createSafeTransitionParticipants()是我创建的一个Transition帮助类。new Pair()中的两个参数,第一个是参与Transition的View(我这里是一个ImageView),第二个参数是要启动的Activity中对应的View设置的TransitionName属性
ActivityOptionsCompat.makeSceneTransitionAnimation()方法接收两个参数,第一个是Activity,第二个是Pair数组,既然是数组,就说明参与Transition的View可以有多个,只要再创建一个Pair对象,添加进Pair数组就行了。
ActivityCompat.startActivity():这个方法有三个参数,第一个是Activity;第二个是Intent;第三个是Bundle(将我们第二步得到的transitionBundle传入进去就行了);
TransitionHelper
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.util.Pair;
import android.view.View;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
}
源码下载
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|