[英]android Navigation-drawer ,switching between fragment
When i switch between fragments in Navigation-drawer , Navigation-drawer closes slowly , i assume it waits to replace the newly selected fragment and closes the drawer, 当我在Navigation-Drawer中的片段之间切换时, Navigation-Drawer会缓慢关闭,我认为它正在等待替换新选择的片段并关闭抽屉,
How can i speed up it? 我如何加快速度? In Gmail app, when you select a tab in Navigation-drawer ,the new fragment is not created immediately,instead it shows a ProgressBar ,then content is load,Also Navigation-drawer closing is speed here.
在Gmail应用程序中,当您在Navigation-drawer中选择一个选项卡时,不会立即创建新片段,而是显示ProgressBar ,然后加载内容,并且在这里关闭Navigation-抽屉也很方便。
How can i do it, Any code example is appreciated. 我该怎么做,任何代码示例表示赞赏。
Edit 编辑
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
.....
navigationDrawerTitles = getResources().getStringArray(R.array.navigation_drawer_titles);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, navigationDrawerTitles));
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
.......
}
private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
selectItem(position);
}
}
private void selectItem(int position) {
switch(position){
case 0:
getFragmentManager().beginTransaction()
.replace(R.id.content_frame, new HomeFragment(), "HomeFragment").commit();
mDrawerList.setItemChecked(position, true);
setTitle(navigationDrawerTitles[position]);
break;
case 1:
getFragmentManager().beginTransaction()
.replace(R.id.content_frame, new HistoryFragment(), "HistoryFragment").commit();
mDrawerList.setItemChecked(position, true);
setTitle(navigationDrawerTitles[position]);
break;
case 2:
Intent sintent = new Intent(MainActivity.this,
SettingsActivity.class);
startActivity(sintent);
break;
default:
break;
}
mDrawerLayout.closeDrawer(mDrawerList);
}
Thanks, 谢谢,
I think this link will help you: Speed up Android Navigation drawer 我认为此链接将为您提供帮助: 加快Android导航抽屉的速度
public boolean smoothSlideViewTo(... int duration) {
...
return forceSettleCapturedViewAt(... int duration);
}
You have to close drawer when you replace fragment like this: 当您替换片段时,您必须关闭抽屉:
if (drawerLayout.isDrawerOpen(Gravity.START)) {
drawerLayout.closeDrawers();
}else{
drawerLayout.openDrawer(Gravity.START);
}
// your code to replace or add fragment //您的代码以替换或添加片段
NOTE:- Change Gravity.START to Gravity.END if your drawer is open from right side. 注意:-如果您的抽屉从右侧打开,请更改Gravity.START到Gravity.END。 first close drawer and then replace fragment
首先关闭抽屉,然后更换碎片
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.