2014-10-18 173 views
2

之间的切换,当我在导航抽屉片段之间切换,导航抽屉慢慢关闭,我假定它等待更换新选择的片段并关闭抽屉,机器人导航抽屉,片段

我如何加快速度?在的Gmail应用程序,当你选择在导航抽屉选项卡,新片段不会立即创建,而是显示了一个进度,那么内容的负载,而且导航抽屉收盘正在加快在这里。

我该怎么做,任何代码示例表示赞赏。

编辑

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

} 

感谢,

+0

显示你的代码... – Riser 2014-10-18 05:40:08

+0

发布您的代码第一 – 2014-10-18 05:45:01

+0

如果你这样做,然后在片段的任何繁重的工作也开始发生了.. – Riser 2014-10-18 06:11:46

回答

0

我认为这个链接将帮助您:Speed up Android Navigation drawer

public boolean smoothSlideViewTo(... int duration) { 
    ... 
    return forceSettleCapturedViewAt(... int duration); 
} 
+0

我不需要增加它的速度,我需要使导航抽屉在加载新的片段时不会受到影响。我需要添加'getFragmentManager()。beginTransaction() .replace(R.id.content_frame,new HomeFragment(),“HomeFragment”)。commit();'code in separate thread? – Nasrudeen 2014-10-18 06:06:33

0

你要关闭抽屉,请更换片段是这样的:

​​

//你的代码,更换或添加片段

注: -更改Gravity.START到Gravity.END如果你的抽屉是从右侧打开。第一关抽屉,然后替换片段

+0

我把抽屉关掉了,当我按照你所说的替换了碎片时,仍然没有用。我假设它是因为碎片的繁重工作,你能否检查Gmail应用程序,他们是通过在单独的线程中加载碎片来处理问题,我们如何实现它? – Nasrudeen 2014-10-18 06:51:59

+0

片段中的数据来自本地或来自Web服务。 – Dev 2014-10-18 06:56:35

+0

数据来自本地 – Nasrudeen 2014-10-18 06:59:25