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);
        }
    }
  • 相关阅读:
    WinDbg调试C#技巧,解决CPU过高、死锁、内存爆满
    Window环境下搭建Git服务器
    Virtual Box虚拟机Ubuntu系统安装及基本配置
    修改VS2017新建类模板文件添加注释
    .net core 使用IIS作为宿主Web服务器,部署常见问题
    Asp.Net进程外Session(状态服务器Session、数据库Session)
    百度地图DEMO-路线导航,测距,标点
    c#文件图片操作
    C#代码安装Windows服务(控制台应用集成Windows服务)
    通过经纬度获取地址信息
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/4985149.html
Copyright © 2011-2022 走看看