package net.simonvt.menudrawer.samples; import net.simonvt.menudrawer.MenuDrawer; import android.app.ListActivity; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class ListActivitySample extends ListActivity { private static final String STATE_MENUDRAWER = "net.simonvt.menudrawer.samples.ListActivitySample.menuDrawer"; private MenuDrawer mMenuDrawer; private Handler mHandler; private Runnable mToggleUpRunnable; private boolean mDisplayUp = true; @Override public void onCreate(Bundle inState) { super.onCreate(inState); mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.MENU_DRAG_CONTENT); TextView menuView = new TextView(this); menuView.setGravity(Gravity.CENTER); menuView.setTextColor(0xFFFFFFFF); final int padding = dpToPx(16); menuView.setPadding(padding, padding, padding, padding); menuView.setText(R.string.sample_listactivity); mMenuDrawer.setMenuView(menuView); mMenuDrawer.setOffsetMenuEnabled(false); List<String> items = new ArrayList<String>(); for (int i = 1; i <= 20; i++) { items.add("Item " + i); } setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items)); // When running on ICS or higher, the "up" button blinks until it is clicked. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { mHandler = new Handler(); getActionBar().setDisplayHomeAsUpEnabled(true); mToggleUpRunnable = new Runnable() { @Override public void run() { mDisplayUp = !mDisplayUp; getActionBar().setDisplayHomeAsUpEnabled(mDisplayUp); mHandler.postDelayed(mToggleUpRunnable, 500); } }; mHandler.postDelayed(mToggleUpRunnable, 500); mMenuDrawer.setOnDrawerStateChangeListener(new MenuDrawer.OnDrawerStateChangeListener() { @Override public void onDrawerStateChange(int oldState, int newState) { if (newState == MenuDrawer.STATE_OPEN) { mHandler.removeCallbacks(mToggleUpRunnable); if (!mDisplayUp) getActionBar().setDisplayHomeAsUpEnabled(true); mMenuDrawer.setOnDrawerStateChangeListener(null); } } }); } } private int dpToPx(int dp) { return (int) (getResources().getDisplayMetrics().density * dp + 0.5f); } @Override public void setContentView(int layoutResID) { // This override is only needed when using MENU_DRAG_CONTENT. mMenuDrawer.setContentView(layoutResID); onContentChanged(); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { String str = (String) getListAdapter().getItem(position); Toast.makeText(this, "Clicked: " + str, Toast.LENGTH_SHORT).show(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: mMenuDrawer.toggleMenu(); return true; } return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { final int drawerState = mMenuDrawer.getDrawerState(); if (drawerState == MenuDrawer.STATE_OPEN || drawerState == MenuDrawer.STATE_OPENING) { mMenuDrawer.closeMenu(); return; } super.onBackPressed(); } }