【问题标题】:NavigationView widget, complete animation before changes between ActivitiesNavigationView 小部件,在活动之间更改之前完成动画
【发布时间】:2016-04-06 21:01:47
【问题描述】:

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

附言在 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;
            }
        });
    }

【问题讨论】:

  • 首先,使用导航视图调用新活动是一个坏习惯。电池使用片段...您可以使用处理程序的 postdelay 方法进行延迟
  • 我的活动有点复杂,我在一些活动中已经是一个片段选择器。我读过片段中的片段会产生问题,因此我将活动分为活动以避免浪费时间。

标签: java android xml


【解决方案1】:

我在一个论坛中找到了一个解决方案,添加一个 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2016-01-23
    • 1970-01-01
    • 2012-12-30
    • 2017-03-15
    • 2011-09-13
    相关资源
    最近更新 更多