NavigationView小部件,在活动之间更改之前完成动画

时间:2016-04-06 12:43:26

标签: java android xml

我使用NavigationView小部件创建一个用于我的应用程序的侧边菜单。我决定在NavigationView菜单中为每个项目使用单独的活动。所以,如果我打开,例如,"设置"语音将加载设置活动。它的工作方式与预期相符,但问题是NavigationView没有时间完成关闭动画mDrawerLayout.closeDrawers();新活动的启动。如何在开始新活动之前添加一些延迟以允许完成mDrawerLayout.closeDrawers();

P.S。在startActivity之前移动mDrawerLayout.closeDrawers();并没有帮助。

这是我的代码:

private void addDrawerItems() {
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                menuItem.setChecked(true);
                switch (menuItem.getItemId()) {
                    case R.id.menu_main:
                        //Do something
                        break;
                    case R.id.menu_monitor:
                        Intent i = new Intent(Main_activity.this, Monitor_Activity.class);
                        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        startActivity(i);
                        break;
                    case R.id.menu_settings:
                        //Do something
                        break;
                }
                mDrawerLayout.closeDrawers();

                return true;
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

我在论坛中找到了一个解决方案,它添加了一个DrawerListener并在NavigationDrawer完成关闭动画后启动新的Activity:

mDrawerLayout.setDrawerListener( new DrawerLayout.SimpleDrawerListener() {
    @Override
    public void onDrawerClosed(View drawerView) {
        super.onDrawerClosed(drawerView);
        Intent i = new Intent(Main_activity.this, Monitor_Activity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(i);
    }
});
mDrawerLayout.closeDrawers();