studio programacion para intuitivas for español dummies desarrollo con avanzado aplicaciones android android-sliding

android - programacion - ¿Cómo mostrar el menú deslizante en el lanzamiento de la actividad?



manual desarrollo de aplicaciones android pdf (3)

Estoy tratando de usar un excelente menú deslizante de la biblioteca por Jeremy Feinstein.

En mi caso, sería genial si la actividad se inicia con el menú deslizante abierto como

En lugar de menú deslizante cerrado como

He intentado poner toggle() en la actividad pero no tengo uso.

SlidingSherlockFragmentActivity

Es igual que SlidingFragmentActivity excepto que extiende SherlockFragmentActivity en lugar de FragmentActivity.

BaseActividad

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(); } } }); } }

[Editar 2]

Parece que toggle() en onStart() es la activación al abrir y cerrar el menú deslizante antes de que se muestre la actividad.

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)

Mi pregunta

Al utilizar el menú deslizante de la biblioteca de Android, ¿cómo iniciar una actividad con el menú deslizante abierto?


Hay una mejor manera de hacer esto sin publicar en el Handler , si hereda de una de las clases de SlidingActivity :

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

Esto funciona porque SlidingActivityHelper restaura el estado de apertura / cierre del menú desde el estado de la instancia guardada. Si no hay un estado guardado, no hay ningún daño en configurarlo como estado predeterminado .


Puedes usar:

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


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

Ponlo en onCreate hizo el truco para mí.