Android 返回到上一个活动时NavDrawer不需要的动画
我有一个导航抽屉,在选择项目时启动活动。问题是:当我从一个活动中按back时,我返回到上一个活动,但不幸的是,我看到导航抽屉关闭的动画。 这是一种不想要的行为:我想回去,看不到任何动画 这是我的密码: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
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系统已经忙于渲染新活动,因此没有足够的容量渲染结束动画
若要解决此问题,可以加快动画的速度(这样可以减少动画渲染)。不幸的是,这样做似乎有点复杂
要了解有关加速动画的更多信息,请阅读以下内容:
请提供选择项目时开始活动的代码。谢谢,我更新了答案:)谢谢,伙计!你救了我的命!我还有一个问题。。。现在,当我启动一个活动时,抽屉关闭的动画似乎有点滞后…你能告诉我一些可能的原因吗?我更新了我的答案,给你一些提示。我认为没有内置的解决方案。对不起,伙计!