场景过渡动画(Scene Transition)-简单使用

1.先说一下 过渡动画(Transition Animation)

过度动画有3种:场景过渡动画(Scene Transition),Activity过渡动画,共享元素过渡动画(Shared Element Transition)

这一次介绍Scene Transition的简单使用,之后会写文章陆续介绍后2种.

2.Scene Transition主要用到:

Scene : 场景,简单的就是两个xml布局 , 复杂的就是有多少场景信息,就有多少布局

Transition : 动画

TransitionManager : 用go(scene) 或 go(scene , tansition) 执行场景过渡动画

3.资源文件实现方式:

final ViewGroup container = (ViewGroup) findViewById(R.id.container); //场景存放在这个viewgroup
        final TransitionInflater transitionInflater = TransitionInflater.from(this);
        //资源文件方式-动画效果在R.transition.transition_manager中
        transitionManager = transitionInflater.inflateTransitionManager(R.transition.transition_manager , container);
        //场景( Scene.getSceneForLayout( viewgroup container , int id , context this);//加载场景)
        scene1 = Scene.getSceneForLayout(container , R.layout.scene_before , this);
        scene2 = Scene.getSceneForLayout(container , R.layout.scene_after , this);

        go1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (i == 0) {
                    //资源文件方式-用transitionmanager(执行场景scene),因为动画效果在manager中
                    transitionManager.go(scene2);
                    i = 1;
                } else {
                    transitionManager.go(scene1);
                    i = 0;
                }
            }

activity布局如下:



    container">

        

    

    

R.transition.transition_manager如下:




    

动画效果资源文件R.transition.slow_auto_transition如下:




    

    

    



4.代码实现方式:

//代码方式-动画效果
        //具体的动画效果//常用的有:幻灯片 Slide,淡入淡出 Fade
        //ChangeBounds   检测view的位置边界创建移动和缩放动画
        ChangeBounds changeBounds = new ChangeBounds();
        changeBounds.setDuration(500); //duration有作用,在资源文件中写的duration好像不起作用

        //慢慢单个浮现
        Fade fadeout = new Fade(Fade.OUT); //设置场景第一次被加载到viewgroup的效果
        fadeout.setDuration(500);
        //慢慢全部浮现
        Fade fadein = new Fade(Fade.IN);
        fadein.setDuration(500);
        //默认是从下往上滑出
        Slide slide = new Slide(); //不能和fade同时使用,也不能和changbounds同时使用
        slide.setDuration(500);



        final TransitionSet transition = new TransitionSet(); //代码创建的动画效果transition
        transition.setOrdering(TransitionSet.ORDERING_SEQUENTIAL);
        transition//.addTransition(fadeout)
                //.addTransition(changeBounds)
                //.addTransition(fadein)
                .addTransition(slide);

        go2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //代码方式-用transitionmanager(执行场景scene和动画tansition)
                if (i == 0) {
                    TransitionManager.go(scene2 , transition);
                    i = 1;
                } else {
                    TransitionManager.go(scene1 , transition);
                    i = 0;
                }
            }
        });

5.两个场景布局如下:

scene_before.xml:




    

    

scene_after.xml :




    

    

6.以上都是自己测试总结的,可能不会很对。具体自行测试



你可能感兴趣的:(场景过渡动画(Scene Transition)-简单使用)