Android 返回到上一个活动时NavDrawer不需要的动画

Android 返回到上一个活动时NavDrawer不需要的动画,android,performance,navigation,navigation-drawer,Android,Performance,Navigation,Navigation Drawer,我有一个导航抽屉,在选择项目时启动活动。问题是:当我从一个活动中按back时,我返回到上一个活动,但不幸的是,我看到导航抽屉关闭的动画。 这是一种不想要的行为:我想回去,看不到任何动画 这是我的密码: private DrawerLayout mDrawerLayout; //declared globally in my Activity mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); //located in

我有一个导航抽屉,在选择项目时启动活动。问题是:当我从一个活动中按back时,我返回到上一个活动,但不幸的是,我看到导航抽屉关闭的动画。 这是一种不想要的行为:我想回去,看不到任何动画

这是我的密码:

private DrawerLayout mDrawerLayout; //declared globally in my Activity

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); //located in my OnCreate()
当我回到上一个活动时,我就是这样关闭NavDrawer的:

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

    super.onResume();
}
@Override
public void onResume(){
mDrawerLayout.closeDrawer(Gravity.START); //this should have been done before
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();

                     }
            } //switch end
            mDrawerLayout.closeDrawer(Gravity.START);
}//onClick end
错在哪里

编辑

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

@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();

                         }




            }

        }

恢复活动时不应关闭抽屉:

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

    super.onResume();
}
@Override
public void onResume(){
mDrawerLayout.closeDrawer(Gravity.START); //this should have been done before
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();

                     }
            } //switch end
            mDrawerLayout.closeDrawer(Gravity.START);
}//onClick end
相反,当从抽屉开始活动时,您应该关闭它:

@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...
另一种可能(隐藏关闭动画)是在启动新活动后关闭抽屉:

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

    super.onResume();
}
@Override
public void onResume(){
mDrawerLayout.closeDrawer(Gravity.START); //this should have been done before
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();

                     }
            } //switch end
            mDrawerLayout.closeDrawer(Gravity.START);
}//onClick end
编辑: 此解决方案的一个问题可能是结束动画似乎有点滞后。这是因为Android系统已经忙于渲染新活动,因此没有足够的容量渲染结束动画

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

要了解有关加速动画的更多信息,请阅读以下内容:

请提供选择项目时开始活动的代码。谢谢,我更新了答案:)谢谢,伙计!你救了我的命!我还有一个问题。。。现在,当我启动一个活动时,抽屉关闭的动画似乎有点滞后…你能告诉我一些可能的原因吗?我更新了我的答案,给你一些提示。我认为没有内置的解决方案。对不起,伙计!