Android Open Source - android Nav Drawer Controller






From Project

Back to project page android.

License

The source code is released under:

Apache License

If you think the Android project android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.github.digin.android;
/*from  ww w .  j  a v a  2 s .  c o m*/
import android.app.Activity;
import android.app.Fragment;
import android.content.res.Configuration;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;

import com.github.digin.android.adapters.NavDrawerAdapter;
import com.github.digin.android.fragments.DeveloperFragment;
import com.github.digin.android.fragments.DiginAboutFragment;

/**
 * Created by david on 8/11/14.
 */
public class NavDrawerController implements AdapterView.OnItemClickListener {

    private final Activity mActivity;
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
    private TextView aboutDigin, aboutDevs;

    //Used to temporarily change the title when the drawer is open. This holds the previous title.
    private String oldTitle;

    public NavDrawerController(final Activity activity, final ListView mDrawerList, DrawerLayout mDrawerLayout) {
        this.mDrawerLayout = mDrawerLayout;
        this.mDrawerList = mDrawerList;
        this.mActivity = activity;
    }

    public int getCurrentItem() {
        return ((NavDrawerAdapter) mDrawerList.getAdapter()).getCurrentItem();
    }

    public void init() {
        // Set the adapter for the list view
        mDrawerList.setAdapter(new NavDrawerAdapter(mActivity, R.layout.drawer_item, NavDrawerItem.getItems()));
        // Set the list's click listener
        mDrawerList.setOnItemClickListener(this);

        mDrawerToggle = new ActionBarDrawerToggle(
                mActivity,                  /* host Activity */
                mDrawerLayout,         /* DrawerLayout object */
                R.drawable.ic_drawer,  /* nav drawer icon to replace 'Up' caret */
                R.string.action_close_drawer,  /* "open drawer" description */
                R.string.action_open_drawer  /* "close drawer" description */
        ) {

            /** Called when a drawer has settled in a completely closed state. */
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                if (oldTitle != null)
                    mActivity.getActionBar().setTitle(oldTitle);
            }

            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);

                oldTitle = mActivity.getActionBar().getTitle().toString();

                mActivity.getActionBar().setTitle(mActivity.getString(R.string.app_name));
            }
        };

        // Set the drawer toggle as the DrawerListener
        mDrawerLayout.setDrawerListener(mDrawerToggle);

        // Set up about buttons on the bottom

        aboutDigin = (TextView) mDrawerLayout.findViewById(R.id.drawer_about_digin);
        aboutDigin.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                aboutDigin();
            }
        });

        aboutDevs = (TextView) mDrawerLayout.findViewById(R.id.drawer_about_developers);
        aboutDevs.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                aboutDevs();
            }
        });

    }

    public void syncState() {
        mDrawerToggle.syncState();
    }

    public void onConfigurationChanged(Configuration newConfig) {
        mDrawerToggle.onConfigurationChanged(newConfig);
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        return mDrawerToggle.onOptionsItemSelected(item);
    }

    private void aboutDigin() {
        displayNewFragment(-2, new NavDrawerItem(DiginAboutFragment.class, "About Dig IN"));
    }

    private void aboutDevs() {
        displayNewFragment(-1, new NavDrawerItem(DeveloperFragment.class, "About the developers"));
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        displayNewFragment(position, (NavDrawerItem) view.getTag());
    }

    public void displayNewFragment(int position, NavDrawerItem item) {
        if(mActivity.getFragmentManager().findFragmentById(R.id.content_frame) != item.getFragment()) {

            ((NavDrawerAdapter) mDrawerList.getAdapter()).setCurrentItem(position);

            mActivity.getActionBar().setTitle(mActivity.getString(R.string.app_name));
            oldTitle = null;
            mActivity.getActionBar().setBackgroundDrawable(mActivity.getResources().getDrawable(R.drawable.ab_solid_diginpassport));

            Fragment frag = item.getFragment();
            if (frag != null) {
                while (mActivity.getFragmentManager().getBackStackEntryCount() > 0)
                    mActivity.getFragmentManager().popBackStackImmediate();

                mActivity.getFragmentManager().beginTransaction().replace(R.id.content_frame,
                        frag,
                        frag.getClass().getName()).commit();

            }
        }
        mDrawerLayout.closeDrawers();
    }


}




Java Source Code List

com.github.digin.android.ApplicationTest.java
com.github.digin.android.DiginApplication.java
com.github.digin.android.ImageCacheEntry.java
com.github.digin.android.NavDrawerController.java
com.github.digin.android.NavDrawerItem.java
com.github.digin.android.Utils.java
com.github.digin.android.activities.MainActivity.java
com.github.digin.android.adapters.ChefListAdapter.java
com.github.digin.android.adapters.NavDrawerAdapter.java
com.github.digin.android.adapters.ParticipantListAdapter.java
com.github.digin.android.constants.LocationDataHolder.java
com.github.digin.android.constants.MapOverlayData.java
com.github.digin.android.constants.ParseID.java
com.github.digin.android.constants.ParseKeys.java
com.github.digin.android.constants.Station.java
com.github.digin.android.exceptions.InvalidClassException.java
com.github.digin.android.factories.BreweryFactory.java
com.github.digin.android.factories.ChefFactory.java
com.github.digin.android.factories.WineryFactory.java
com.github.digin.android.fragments.BoundedMapFragment.java
com.github.digin.android.fragments.BreweriesFragment.java
com.github.digin.android.fragments.BreweryDetailsFragment.java
com.github.digin.android.fragments.ChefListFragment.java
com.github.digin.android.fragments.DetailsFragment.java
com.github.digin.android.fragments.DeveloperFragment.java
com.github.digin.android.fragments.DiginAboutFragment.java
com.github.digin.android.fragments.FavoritesFragment.java
com.github.digin.android.fragments.LineupListFragment.java
com.github.digin.android.fragments.ParticipantDetailsFragment.java
com.github.digin.android.fragments.WineriesFragment.java
com.github.digin.android.fragments.WineryDetailsFragment.java
com.github.digin.android.listeners.OnBoundsQueryListener.java
com.github.digin.android.listeners.OnBoundsRetrievalListener.java
com.github.digin.android.listeners.OnParticipantQueryListener.java
com.github.digin.android.listeners.OnSingleParticipantQueryListener.java
com.github.digin.android.logging.AnalyticsHelper.java
com.github.digin.android.logging.Logger.java
com.github.digin.android.models.Brewery.java
com.github.digin.android.models.Chef.java
com.github.digin.android.models.ParseBackedModel.java
com.github.digin.android.models.Participant.java
com.github.digin.android.models.TemporaryParticipantPlaceholder.java
com.github.digin.android.models.Winery.java
com.github.digin.android.models.map.BoundPoint.java
com.github.digin.android.models.map.Bounds.java
com.github.digin.android.repositories.BoundsStore.java
com.github.digin.android.repositories.BreweryStore.java
com.github.digin.android.repositories.ChefsStore.java
com.github.digin.android.repositories.FavoritesStore.java
com.github.digin.android.repositories.WineryStore.java
com.github.digin.android.tasks.ParseAllBoundsTask.java
com.github.digin.android.tasks.ParseAllBreweriesTask.java
com.github.digin.android.tasks.ParseAllChefsTask.java
com.github.digin.android.tasks.ParseAllWineriesTask.java
com.nirhart.parallaxscroll.views.ParallaxExpandableListView.java
com.nirhart.parallaxscroll.views.ParallaxListViewHelper.java
com.nirhart.parallaxscroll.views.ParallaxListView.java
com.nirhart.parallaxscroll.views.ParallaxScrollView.java
com.nirhart.parallaxscroll.views.ParallaxedView.java