返回上一个 Activity 时 NavDrawer 出现不需要的动画

Unwanted animation of the NavDrawer when getting back to previous Activity

我有一个导航抽屉,它在选择项目时启动活动。问题是:当我从 Activity 返回时,我回到了之前的 Activity,但不幸的是我看到导航抽屉关闭的动画。 这是一种不受欢迎的行为:我想返回并且根本看不到任何动画!

这是我的代码:

private DrawerLayout mDrawerLayout; //declared globally in my Activity

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); //located in my OnCreate()

这就是我回到上一个时关闭 NavDrawer 的方式 Activity:

@Override
public void onResume(){
    mDrawerLayout.closeDrawer(Gravity.START);

    super.onResume();
}

哪里错了?

编辑

以下是我如何从导航抽屉开始活动:

@Override
        public void onClick(View view, int position) {


            switch(position){

                case 0 : {
                            Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), PreparativiActivity.class);
                            NavigationDrawerFragment.this.startActivity(myIntent);
                            break;
                         }


                case 1 : {
                            Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), MainActivity.class);
                            NavigationDrawerFragment.this.startActivity(myIntent);
                            break;
                         }


                case 2 : {
                            Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), ModulisticaActivity.class);
                            NavigationDrawerFragment.this.startActivity(myIntent);
                            break;
                         }




                case 3 : {
                            Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), PoloActivity.class);
                            NavigationDrawerFragment.this.startActivity(myIntent);
                            break;
                         }


                case 4 : {
                          Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), ContattiActivity.class);
                          NavigationDrawerFragment.this.startActivity(myIntent);
                          break;
                         }


                case 5 : {
                          Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), IntroQuizActivity.class);
                          NavigationDrawerFragment.this.startActivity(myIntent);
                          break;
                         }


                case 6 : {
                           Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), CreditiActivity.class);
                           NavigationDrawerFragment.this.startActivity(myIntent);
                           break;
                          }


                default: { Toast.makeText(getActivity(), "Errore di sistema numero 001 ", Toast.LENGTH_SHORT).show();

                         }




            }

        }

恢复时不应该关闭抽屉Activity:

@Override
public void onResume(){
mDrawerLayout.closeDrawer(Gravity.START); //this should have been done before
super.onResume();
}

相反,当从抽屉中启动 Activity 时,您应该 关闭它:

@Override
public void onClick(View view, int position) {
        switch(position){

            case 0 : {
                        Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), PreparativiActivity.class);
                        mDrawerLayout.closeDrawer(Gravity.START);
                        NavigationDrawerFragment.this.startActivity(myIntent);
                        break;
                     }
//And so on...

另一种可能性(进一步隐藏关闭动画)是在启动新的 Activity:

后关闭抽屉
@Override
    public void onClick(View view, int position) {


        switch(position){

            case 0 : {
                        Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), PreparativiActivity.class);
                        NavigationDrawerFragment.this.startActivity(myIntent);
                        break;
                     }


            case 1 : {
                        Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), MainActivity.class);
                        NavigationDrawerFragment.this.startActivity(myIntent);
                        break;
                     }


            case 2 : {
                        Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), ModulisticaActivity.class);
                        NavigationDrawerFragment.this.startActivity(myIntent);
                        break;
                     }




            case 3 : {
                        Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), PoloActivity.class);
                        NavigationDrawerFragment.this.startActivity(myIntent);
                        break;
                     }


            case 4 : {
                      Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), ContattiActivity.class);
                      NavigationDrawerFragment.this.startActivity(myIntent);
                      break;
                     }


            case 5 : {
                      Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), IntroQuizActivity.class);
                      NavigationDrawerFragment.this.startActivity(myIntent);
                      break;
                     }


            case 6 : {
                       Intent myIntent = new Intent(NavigationDrawerFragment.this.getActivity(), CreditiActivity.class);
                       NavigationDrawerFragment.this.startActivity(myIntent);
                       break;
                      }


            default: { Toast.makeText(getActivity(), "Errore di sistema numero 001 ", Toast.LENGTH_SHORT).show();

                     }
            } //switch end
            mDrawerLayout.closeDrawer(Gravity.START);
}//onClick end

编辑: 此解决方案的一个问题可能是关闭动画看起来有点滞后。这是因为 Android-系统已经忙于渲染新的 Activity,所以没有足够的容量来渲染关闭动画了。

解决这个问题,您可以加快动画速度(这样就会减少动画渲染)。不幸的是,这样做似乎有点复杂。

要了解有关加速动画的更多信息,请阅读此处: Speed up 'Navigation Drawer' animation speed on closing?