返回上一个 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?
我有一个导航抽屉,它在选择项目时启动活动。问题是:当我从 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?