Как показать «Скользящее меню» при запуске Activity?

Я пытаюсь использовать отличное меню для раздвижных книг Джереми Фейнштейна.

Для моего случая будет здорово, если действие будет запущено с помощью раздвижного меню, как например

Введите описание изображения здесь

Вместо раздвижного меню закрыто, как

Введите описание изображения здесь

Я попытался включить toggle() в действие, но не использовать.

SlidingSherlockFragmentActivity

Это то же самое, что и SlidingFragmentActivity, за исключением того, что он расширяет свойство SherlockFragmentActivity вместо FragmentActivity.

BaseActivity

 public class BaseActivity extends SlidingSherlockFragmentActivity { private int mTitleRes; protected ListFragment mFrag; public BaseActivity(int titleRes) { mTitleRes = titleRes; } private static final String TAG = "BaseActivity"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(mTitleRes); // set the Behind View setBehindContentView(R.layout.menu_frame); FragmentTransaction t = this.getSupportFragmentManager().beginTransaction(); mFrag = new SampleListFragment(); t.replace(R.id.menu_frame, mFrag); t.commit(); // customize the SlidingMenu SlidingMenu sm = getSlidingMenu(); sm.setShadowWidthRes(R.dimen.shadow_width); sm.setShadowDrawable(R.drawable.shadow); sm.setBehindOffsetRes(R.dimen.slidingmenu_offset); sm.setFadeDegree(0.35f); sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); getSupportActionBar().setDisplayHomeAsUpEnabled(true); sm.setOnOpenListener(new SlidingMenu.OnOpenListener() { @Override public void onOpen() { Log.d(TAG, "onOpen"); } }); sm.setOnOpenedListener(new SlidingMenu.OnOpenedListener() { @Override public void onOpened() { Log.d(TAG, "onOpened"); } }); sm.setOnCloseListener(new SlidingMenu.OnCloseListener() { @Override public void onClose() { Log.d(TAG, "onClose"); } }); sm.setOnClosedListener(new SlidingMenu.OnClosedListener() { @Override public void onClosed() { Log.d(TAG, "onClosed"); } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: toggle(); return true; } return super.onOptionsItemSelected(item); } 

}

FlipperCheck

 public class FlipperCheck extends BaseActivity { private ViewFlipper flipper; private TextView secondaryText; public FlipperCheck() { super(R.string.app_name); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setSlidingActionBarEnabled(true); setContentView(R.layout.main); flipper = (ViewFlipper) findViewById(R.id.voicerecorder_textflipper); flipper.startFlipping(); flipper.setInAnimation(AnimationUtils .loadAnimation(getApplicationContext(), android.R.anim.fade_in)); flipper.setOutAnimation(AnimationUtils .loadAnimation(getApplicationContext(), android.R.anim.fade_out)); secondaryText = (TextView) findViewById(R.id.voicerecorder_secondarytext); secondaryText.setText("Why cannot I see u..."); final TextView firstText = (TextView) findViewById(R.id.firsttext); final TextView secondText = (TextView) findViewById(R.id.secondtext); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { stopFlipper(); flipper.setVisibility(View.INVISIBLE); secondaryText.setVisibility(View.VISIBLE); } }); Button secondButton = (Button) findViewById(R.id.second_button); secondButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { firstText.setText("Replaying"); secondText.setText("Replaying"); } }); } @Override protected void onStart() { super.onStart(); toggle(); } private void stopFlipper() { flipper.getInAnimation().setAnimationListener(new Animation.AnimationListener() { public void onAnimationStart(Animation animation) { } public void onAnimationRepeat(Animation animation) { } public void onAnimationEnd(Animation animation) { int displayedChild = flipper.getDisplayedChild(); int childCount = flipper.getChildCount(); if (displayedChild == childCount - 1) { flipper.stopFlipping(); } } }); } } 

[Редактировать 2]

Похоже, toggle() в onStart() активирует открытие и закрытие раздвижного меню до отображения активности.

 01-01 19:27:53.780: D/BaseActivity(351): onOpen 01-01 19:27:53.780: D/BaseActivity(351): onOpened 01-01 19:27:53.780: D/BaseActivity(351): onClose 01-01 19:27:53.790: D/BaseActivity(351): onClosed 01-01 19:27:54.241: D/dalvikvm(351): GC_EXTERNAL_ALLOC freed 2725 objects / 223104 bytes in 80ms 01-01 19:27:54.370: D/dalvikvm(351): GC_EXTERNAL_ALLOC freed 290 objects / 12352 bytes in 75ms 01-01 19:27:54.520: I/ActivityManager(59): Displayed activity com.abc.FlipperCheck/.FlipperCheck: 3084 ms (total 3084 ms) 

Мой вопрос

При использовании Android-библиотеки «Скользящее меню», как запустить мероприятие с помощью раздвижного меню?

Вы можете использовать:

 @Override public void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); new Handler().postDelayed(new Runnable() { @Override public void run() { toggle(); } }, 1000); } 

Есть лучший способ сделать это, не отправляя SlidingActivity Handler , если вы наследуете один из классов SlidingActivity :

 @Override public void onPostCreate(Bundle savedInstanceState) { if (savedInstanceState == null) { savedInstanceState = new Bundle(); savedInstanceState.putBoolean("SlidingActivityHelper.open", true); } super.onPostCreate(savedInstanceState); } 

Это работает, потому что SlidingActivityHelper восстанавливает состояние открытого / закрытого меню из состояния сохраненного экземпляра. Если нет сохраненного состояния, тогда нет никакого вреда в настройке его как состояния по умолчанию .

 getSlidingMenu().post(new Runnable() { @Override public void run() { getSlidingMenu().showMenu(); } }); 

Поместите его в onCreate, сделал трюк для меня.