android 转场之transition

来源:互联网 发布:js弹出div模态窗口 编辑:程序博客网 时间:2024/06/05 03:26

前言

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

demo下载

http://download.csdn.net/detail/kasieryang/9316387

0 0