2014-04-28 34 views
0

的Android SlidingMenu滞后,我遇到了一些问题与jfeinstein10的slidingmenu库:https://github.com/jfeinstein10/SlidingMenu在第一次使用

我看到的问题是,在第一次使用时,菜单打开时,滞后表现出一些黑色的空间。然后,当我关闭并重新使用它时,一切都很顺利,无需申报。

我基本上有一个Activity扩展SlidingFragmentActivity和2个片段。一个用于左侧菜单,另一个用于主要内容。

这里是我是如何实现它,我在调查这个,但我真的不知道我已经错过了:

public class CavendishSlidingFragmentActivity extends SlidingFragmentActivity { 

private final String TAG = CavendishSlidingFragmentActivity.class.getName(); 

protected FragmentManager fragmentManager; 
protected Fragment mContent; 

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    fragmentManager = getSupportFragmentManager(); 

    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    getSlidingMenu().setBehindOffset((int) (metrics.widthPixels * 0.2)); 
} 

public void onClickMenu(View v) 
{ 

    if (getSlidingMenu().isMenuShowing()) 
     getSlidingMenu().showContent(); 
    else 
     getSlidingMenu().showMenu(); 
} 

public void onClickMenuItem(View v) 
{ 

    Long position = (Long) v.getTag(); 
    switch (position.intValue()) 
    { 
     case Utils.CAT_RESTAURANT: 
      showFragment(new RestaurantFragment()); 
      break; 
     case Utils.CAT_SLEEP: 
      showFragment(new SleepFragment()); 
      break; 
     case Utils.CAT_DISCOVER: 
      showFragment(new DiscoverFragment()); 
      break; 
     case Utils.CAT_TRANSPORT: 
      showFragment(new TransportFragment()); 
      break; 
    } 
} 

private void showFragment(Fragment fragment) 
{ 
    if (mContent != fragment) 
    { 
     mContent = fragment; 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.replace(R.id.main_fragment, fragment); 
     fragmentTransaction.commit(); 
    } 

    getSlidingMenu().showContent(); 
} 
} 

MainActivity.java

public class MainActivity extends CavendishSlidingFragmentActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setBehindContentView(R.layout.fragment_menu); 
    setContentView(R.layout.fragment_main); 

    // set the Above View Fragment 
    if (savedInstanceState != null) 
     mContent = fragmentManager.getFragment(savedInstanceState, "mContent"); 
    if (mContent == null) 
    { 
     mContent = new RestaurantFragment(); 
    } 

    fragmentManager 
      .beginTransaction() 
      .replace(R.id.main_fragment, mContent) 
      .commit(); 
} 

@Override 
public void onSaveInstanceState(Bundle outState) 
{ 
    super.onSaveInstanceState(outState); 
    fragmentManager.putFragment(outState, "mContent", mContent); 
} 

} 

我还可以提供代码,但我认为这个问题可能在这里,因为菜单在初次使用时会自行绘制,导致延迟。我相信在展示之前我必须强制显示菜单。

回答

0

看起来像是在打开菜单时呈现菜单时库存有问题。我猜测我的设计不适合图书馆,我只是传给了默认的Android抽屉。行为有点不同,但设计保持不变,对我来说工作正常。