zoukankan      html  css  js  c++  java
  • android 5.0 -- Activity 过渡动画

    android 5.0 提供3种过渡动画:

    进入

    退出

      进入退出包括如下效果:

        explode 分解:屏幕中间进出

        slide 滑动:屏幕边缘进出

        fade 淡出:改变透明度来添加或者移除视图

    共享

        changeBounds :改变目标视图布局边界

        changeClipBounds:裁剪目标布局边界

        changeTransform:改变视图缩放比例,旋转角度

        changeImageTransform:改变视图大小,缩放比例

    实际开发中的使用:

      1,在要使用过渡动画的多个activity里面添加:

    // 允许使用transitions  
    getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); 

      或者在布局样式文件里面添加如下代码:  

    <item name="android:windowContentTransitions">true</item>  

      2,不同的动画效果:

        进入动画:

    getWindow().setEnterTransition(new Explode());
    getWindow().setEnterTransition(new Slide());
    getWindow().setEnterTransition(new Fade());

        退出动画:

    getWindow().setExitTransition(new Explode());
    getWindow().setExitTransition(new Slide());
    getWindow().setExitTransition(new Fade());

      2,activity跳转启动动画效果:

    startActivity(intent,  
                  ActivityOptions.makeSceneTransitionAnimation(this).toBundle());

      3,共享元素动画:

       

    public class MainActivity extends Activity {
    
        private Intent intent;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_transition);
        }
    
        // 设置不同动画效果
        public void explode(View view) {
            intent = new Intent(this, Transitions.class);
            intent.putExtra("flag", 0);
            startActivity(intent,
                    ActivityOptions.makeSceneTransitionAnimation(this)
                            .toBundle());
        }
        // 设置不同动画效果
        public void slide(View view) {
            intent = new Intent(this, Transitions.class);
            intent.putExtra("flag", 1);
            startActivity(intent,
                    ActivityOptions.makeSceneTransitionAnimation(this)
                            .toBundle());
        }
        // 设置不同动画效果
        public void fade(View view) {
            intent = new Intent(this, Transitions.class);
            intent.putExtra("flag", 2);
            startActivity(intent,
                    ActivityOptions.makeSceneTransitionAnimation(this)
                            .toBundle());
        }
        // 设置不同动画效果
        public void share(View view) {
            View fab = findViewById(R.id.fab_button);
            intent = new Intent(this, Transitions.class);
            intent.putExtra("flag", 3);
            // 创建单个共享元素
    //        startActivity(intent,
    //                ActivityOptions.makeSceneTransitionAnimation(
    //                        this, view, "share").toBundle());
            startActivity(intent,
                    ActivityOptions.makeSceneTransitionAnimation(
                            this,
                            // 创建多个共享元素
                            Pair.create(view, "share"),
                            Pair.create(fab, "fab")).toBundle());
        }
    }

       4,跳转到的activity中的设置:

      

    public class Transitions extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
            int flag = getIntent().getExtras().getInt("flag");
            // 设置不同的动画效果
            switch (flag) {
                case 0:
                    getWindow().setEnterTransition(new Explode());
                    break;
                case 1:
                    getWindow().setEnterTransition(new Slide());
                    break;
                case 2:
                    getWindow().setEnterTransition(new Fade());
                    getWindow().setExitTransition(new Fade());
                    break;
                case 3:
                    break;
            }
            setContentView(R.layout.activity_transition_to);
        }
    }
  • 相关阅读:
    HDU-5818-Joint Stacks
    蓝桥杯-2016CC-卡片换位
    HDU-2255-奔小康赚大钱(KM算法)
    蓝桥杯-PREV31-小朋友排队
    crypto.js加密传输
    js之对象
    LigerUi之ligerMenu 右键菜单
    关于js中window.location.href,location.href,parent.location.href,top.location.href的用法
    设置js的ctx
    AngularJS简单例子
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/4985149.html
Copyright © 2011-2022 走看看