Source code introduction There are different styles of menu display on Android, among which the most used and experienced one is to slide left and right to display the hidden menu. android-menudrawer is a sliding menu implementation that allows users to achieve seamless navigation in the application. This project has a variety of menu display effects, the most common of which is to display it by dragging the edge of the screen or clicking the "up" button of the action bar. Source code running screenshot Source code snippet- package net.simonvt.menudrawer.samples;
-
- import net.simonvt.menudrawer.MenuDrawer;
- import net.simonvt.menudrawer.Position;
-
- import android.os.Build;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentManager;
- import android.support.v4.app.FragmentTransaction;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.TextView;
-
- public class FragmentSample extends BaseListSample {
-
- private static final String STATE_CURRENT_FRAGMENT = "net.simonvt.menudrawer.samples.FragmentSample" ;
-
- private FragmentManager mFragmentManager;
- private FragmentTransaction mFragmentTransaction;
-
- private String mCurrentFragmentTag;
-
- @Override
- protected void onCreate(Bundle inState) {
- super .onCreate(inState);
-
- mFragmentManager = getSupportFragmentManager();
-
- if (inState != null ) {
- mCurrentFragmentTag = inState.getString(STATE_CURRENT_FRAGMENT);
- } else {
- mCurrentFragmentTag = ((Item) mAdapter.getItem( 0 )).mTitle;
- attachFragment(mMenuDrawer.getContentContainer().getId(), getFragment(mCurrentFragmentTag),
- mCurrentFragmentTag);
- commitTransactions();
- }
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
- getActionBar().setDisplayHomeAsUpEnabled( true );
- }
-
- mMenuDrawer.setOnDrawerStateChangeListener( new MenuDrawer.OnDrawerStateChangeListener() {
- @Override
- public void onDrawerStateChange( int oldState, int newState) {
- if (newState == MenuDrawer.STATE_CLOSED) {
- commitTransactions();
- }
- }
-
- @Override
- public void onDrawerSlide( float openRatio, int offsetPixels) {
-
- }
- });
- }
-
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super .onSaveInstanceState(outState);
- outState.putString(STATE_CURRENT_FRAGMENT, mCurrentFragmentTag);
- }
-
- @Override
- protected void onMenuItemClicked( int position, Item item) {
- if (mCurrentFragmentTag != null ) detachFragment(getFragment(mCurrentFragmentTag));
- attachFragment(mMenuDrawer.getContentContainer().getId(), getFragment(item.mTitle), item.mTitle);
- mCurrentFragmentTag = item.mTitle;
- mMenuDrawer.closeMenu();
- }
-
- @Override
- protected int getDragMode() {
- return MenuDrawer.MENU_DRAG_WINDOW;
- }
-
- @Override
- protected Position getDrawerPosition() {
- return Position.LEFT;
- }
-
- protected FragmentTransaction ensureTransaction() {
- if (mFragmentTransaction == null ) {
- mFragmentTransaction = mFragmentManager.beginTransaction();
- mFragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
- }
-
- return mFragmentTransaction;
- }
-
- private Fragment getFragment(String tag) {
- Fragment f = mFragmentManager.findFragmentByTag(tag);
-
- if (f == null ) {
- f = SampleFragment.newInstance(tag);
- }
-
- return f;
- }
-
- protected void attachFragment( int layout, Fragment f, String tag) {
- if (f != null ) {
- if (f.isDetached()) {
- ensureTransaction();
- mFragmentTransaction.attach(f);
- } else if (!f.isAdded()) {
- ensureTransaction();
- mFragmentTransaction.add(layout, f, tag);
- }
- }
- }
-
- protected void detachFragment(Fragment f) {
- if (f != null && !f.isDetached()) {
- ensureTransaction();
- mFragmentTransaction.detach(f);
- }
- }
-
- protected void commitTransactions() {
- if (mFragmentTransaction != null && !mFragmentTransaction.isEmpty()) {
- mFragmentTransaction.commit();
- mFragmentTransaction = null ;
- }
- }
-
- public static class SampleFragment extends Fragment {
-
- private static final String ARG_TEXT = "net.simonvt.menudrawer.samples.SampleFragment.text" ;
-
- public static SampleFragment newInstance(String text) {
- SampleFragment f = new SampleFragment();
-
- Bundle args = new Bundle();
- args.putString(ARG_TEXT, text);
- f.setArguments(args);
-
- return f;
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View v = inflater.inflate(R.layout.fragment_sample, container, false );
-
- ((TextView) v.findViewById(R.id.text)).setText(getArguments().getString(ARG_TEXT));
-
- return v;
- }
- }
- }
Source code link: http://download..com/data/1968347 |