Android 导航抽屉滞后
每次我打开新活动时,导航抽屉都会滞后。我在谷歌上寻找一个解决方案,我发现我可以通过使用处理程序延迟新活动来解决这个问题。我做了一点实验,但什么也没有得到 MainActivity.java中的一些代码片段:Android 导航抽屉滞后,android,navigation,lag,drawer,Android,Navigation,Lag,Drawer,每次我打开新活动时,导航抽屉都会滞后。我在谷歌上寻找一个解决方案,我发现我可以通过使用处理程序延迟新活动来解决这个问题。我做了一点实验,但什么也没有得到 MainActivity.java中的一些代码片段: public void SelectItem(int possition) { Fragment fragment = null; Bundle args = new Bundle(); switch (possition) {
public void SelectItem(int possition) {
Fragment fragment = null;
Bundle args = new Bundle();
switch (possition) {
case 2:
fragment = new FragmentZero();
break;
case 3:
fragment = new FragmentOne();
break;
case 4:
fragment = new FragmentTwo();
break;
case 5:
fragment = new FragmentThree();
break;
case 7:
fragment = new FragmentTwo();
break;
case 8:
fragment = new FragmentZero();
break;
case 9:
fragment = new FragmentOne();
break;
case 10:
fragment = new FragmentTwo();
break;
case 11:
fragment = new FragmentZero();
break;
case 12:
fragment = new FragmentOne();
break;
case 14:
fragment = new FragmentZero();
break;
case 15:
fragment = new FragmentOne();
break;
case 16:
fragment = new FragmentTwo();
break;
default:
break;
}
fragment.setArguments(args);
FragmentManager frgManager = getFragmentManager();
frgManager.beginTransaction().replace(R.id.content_frame, fragment)
.commit();
mDrawerList.setItemChecked(possition, true);
setTitle(dataList.get(possition).getItemName());
mDrawerLayout.closeDrawer(mDrawerList);
}
及
私有类DrawerItemClickListener实现ListView.OnItemClickListener{
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
if(dataList.get(position.getTitle()==null){
选择项目(位置);
}
}
}
在“活动”中创建一个处理程序,并在“创建”方法中对其进行初始化
private Handler mHandler;
mHandler = new Handler();
然后将您的抽屉项目更改为“单击侦听器”
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position,
long id) {
if (dataList.get(position).getTitle() == null) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
SelectItem(position);;
}
}, 250);
}
mDrawerList.setItemChecked(possition, true);
mDrawerLayout.closeDrawer(mDrawerList);
}
}
这不是问题的答案,但您可以像这样捆绑case语句,使代码更加紧凑。看到SwitchDemo2这篇文章,我很感谢你的回答,但正如你所说的,这不是我的问题。这就是为什么我添加它作为一个评论;)我让它工作了,我已经把计时器设置为300,但我仍然不喜欢它的工作方式。当我按下抽屉面板上的按钮时,它滑动得很慢很好,然后活动就像一个瞬间。你可以设置片段之间的过渡动画,帮助平滑一切。查看此问题了解更多信息。
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position,
long id) {
if (dataList.get(position).getTitle() == null) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
SelectItem(position);;
}
}, 250);
}
mDrawerList.setItemChecked(possition, true);
mDrawerLayout.closeDrawer(mDrawerList);
}
}
public void SelectItem(int possition) {
Fragment fragment = null;
Bundle args = new Bundle();
switch (possition) {
case 2:
fragment = new FragmentZero();
break;
case 3:
fragment = new FragmentOne();
break;
case 4:
fragment = new FragmentTwo();
break;
case 5:
fragment = new FragmentThree();
break;
case 7:
fragment = new FragmentTwo();
break;
case 8:
fragment = new FragmentZero();
break;
case 9:
fragment = new FragmentOne();
break;
case 10:
fragment = new FragmentTwo();
break;
case 11:
fragment = new FragmentZero();
break;
case 12:
fragment = new FragmentOne();
break;
case 14:
fragment = new FragmentZero();
break;
case 15:
fragment = new FragmentOne();
break;
case 16:
fragment = new FragmentTwo();
break;
default:
break;
}
fragment.setArguments(args);
FragmentManager frgManager = getFragmentManager();
frgManager.beginTransaction().replace(R.id.content_frame, fragment)
.commit();
setTitle(dataList.get(possition).getItemName());
}