2014-04-28 36 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抽屜。行爲有點不同,但設計保持不變,對我來說工作正常。