在navigationView中切换Activity Fragment 卡顿优化

在项目中 有各种各样的需求,我今天就遇到一个这种需求侧滑菜单
当我们在应用NavigationView+DrawerLayout的时
点击完Menu Drawer进行关闭的同时activity也在打开 我发现这样做效果不是很好有掉帧的情况 出现卡顿
感谢胡凯的图
开始我以为是activity create里面操作延迟比较久 后来注释所有的方法后发现有一点卵用 但是还是有延迟
仔细看图就会发现当drawer回收一半activity就出来了 所以我考虑将选中事件的操作放到drawer close 之后进行 下面 是之前的操作选中后关闭跳转

    /*记录点击那个按钮*/
    public int flag;
    NavigationView.OnNavigationItemSelectedListener navListener = new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            //关闭drawer
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawers();
            }
            int id = item.getItemId();
            switch (id) {
                case R.id.nav_advanced:
                    flag = id;
                    break;
                case R.id.nav_appmanager:
                    flag = id;
                    break;
                case R.id.nav_photo:
                    flag = id;
                    myStartActivity(CleanActivityNew.this,PhotoCleanActivity.class);
                    break;
                case R.id.nav_noti:
                    flag = id;
                    break;
                case R.id.nav_cpu:
                    flag = id;
                    break;
                case R.id.nav_device:
                    flag = id;
                    break;
                case R.id.nav_lock:
                    flag = id;
                    break;
            }
//            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            return true;
        }
    };

现在的操作是给drawerlayout 设置监听事件 close 之后执行操作 上代码

  /*记录点击那个按钮 以便于在 drawerlayout close 中区分点击位置*/
    public int flag;
    NavigationView.OnNavigationItemSelectedListener navListener = new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            //关闭drawer
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawers();
            }
            int id = item.getItemId();
            switch (id) {
                case R.id.nav_advanced:
                    flag = id;
                    break;
                case R.id.nav_appmanager:
                    flag = id;
                    break;
                case R.id.nav_photo:
                    flag = id;
                    break;
                case R.id.nav_noti:
                    flag = id;
                    break;
                case R.id.nav_cpu:
                    flag = id;
                    break;
                case R.id.nav_device:
                    flag = id;
                    break;
                case R.id.nav_lock:
                    flag = id;
                    break;
            }
//            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            return true;
        }
    };

在NavigationView设置完监听之后 给DrawaerLayout 设置事件

 navigationView.setNavigationItemSelectedListener(navListener);//绑定menu的点击事件
        drawer.addDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {

            }

            @Override
            public void onDrawerOpened(View drawerView) {

            }

            @Override
            public void onDrawerClosed(View drawerView) {
                switch (flag) {
                    case R.id.nav_advanced:

//逻辑操作                        myStartActivity(CleanActivityNew.this,DepthcleanupActivity.class);

                        break;
            }

            @Override
            public void onDrawerStateChanged(int newState) {

            }
        });

效果如下
感谢胡凯
感谢http://m.blog.csdn.net/qq_33705491/article/details/52200006

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值