前言
5.0activity之间过度,有很多绚丽的效果,前面学习了共享元素,下面来学习下,Slide实现布依次一次滑入界面。
代码实现
Android studio1.5
sdk 23.1.1
1.设置相关的主题属性
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:colorPrimary">@color/colorPrimary</item>
<item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:colorAccent">@color/colorAccent</item>
<item name="android:textColorPrimary">@android:color/black</item>
//下面这三个一定要有
<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">false</item>
<item name="android:windowAllowReturnTransitionOverlap">false</item>
</style>
2.在代码中设置具体的transtion效果
private void setupWindowAnimations() {
// Re-enter transition is executed when returning to this activity
Slide slideTransition = new Slide();//滑出,fade 也可以,什么效果自己上
slideTransition.setSlideEdge(Gravity.LEFT);//滑出的方向
slideTransition.setInterpolator(new DecelerateInterpolator());
slideTransition.setDuration(500);//动画持续时间
getWindow().setReenterTransition(slideTransition);//
getWindow().setExitTransition(slideTransition);
}
3在跳转时,开始转场过渡
private void startActivity(Class target, Pair<View, String>[] pairs) {
Intent i = new Intent(MainActivity.this, target);
ActivityOptionsCompat transitionActivityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(this,null);
//可以指定共享元素,这里为null
startActivity(i, transitionActivityOptions.toBundle());
//
}
发现
在这个新特性中我们看到了,这个过渡,无非就是给window对象,添加一个转场
getWindow().setReenterTransition(slideTransition);//
getWindow().setExitTransition(slideTransition);
这个转场类Transtion
public abstract class Transition implements Cloneable{....}
与他相关的类有如下:
public class TransitionSet extends Transition {
...}
public class AutoTransition extends TransitionSet {...}
public class ChangeBounds extends Transition {...
}
public abstract class Visibility extends Transition {...}
public class Fade extends Visibility {...}
public class Slide extends Visibility {...}
可以看到所有的类都继承自Transition,我们这个demo中的Slide是继承自,Visibility,Visibility又是Tansition的子类。关于Transition看看,官方的介绍(这里我们还要提到另外一个类 Scene ):
1.Scene :
场景是一个视图层次结构的状态的封装,包括在该层次结构中的视图和那些视图的各种值(布局相关和其他)。一个场景可以通过一个布局层次结构来定义,或者通过代码来动态设置场景;
关于Scence的应用,查看下面的连接(本文只是延伸到transtion):
a.http://www.tuicool.com/articles/zAZNVn
2.Transiotn:
转换是一种机制,当一个新的场景被输入时,自动动画发生变化
相关应用
更多相关请查看官方Transtionl框架:
http://wear.techbrood.com/reference/android/transition/package-summary.html