Skip to content

Instantly share code, notes, and snippets.

@coffeearmy
Created May 17, 2014 10:37
Show Gist options
  • Save coffeearmy/8cd7ae648ebe659bf990 to your computer and use it in GitHub Desktop.
Save coffeearmy/8cd7ae648ebe659bf990 to your computer and use it in GitHub Desktop.
Android Navigation Drawer
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.RelativeLayout;
public class MainActivity extends ActionBarActivity {
// UI elements
private static DrawerLayout mDrawerLayout = null;
private static ActionBarDrawerToggle mDrawerToggle = null;
/** Close the menu drawer */
public static void closeDrawer(String name) {
if (!(name == null)) {
mTitle = name;
}
mDrawerLayout.closeDrawer(mLayoutDrawer);
}
// Titles
private CharSequence mDrawerTitle;
private FragmentManager mFragmentManager;
private static RelativeLayout mLayoutDrawer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFragmentManager = getSupportFragmentManager();
createFragments();
// Replace the layout inside the drawer layout with Drawer Menu fragment
configDrawerMenu();
// Set Title
mTitle = mDrawerTitle = getTitle();
// Get layout drawer
mLayoutDrawer = (RelativeLayout) findViewById(R.id.drawerContainer);
// Set drawer Layout
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
// Configurate Drawer toggle
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, R.string.drawer_open,
R.string.drawer_close) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
getSupportActionBar().setTitle(mDrawerTitle);
ActivityCompat.invalidateOptionsMenu(MainActivity.this);
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getSupportActionBar().setTitle(mDrawerTitle);
ActivityCompat.invalidateOptionsMenu(MainActivity.this);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
// Display icons in action bar
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Show drawer menu
if (mDrawerToggle.onOptionsItemSelected(item))
return (true);
return (super.onOptionsItemSelected(item));
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
/**
* Replace the layout fragment in the layout drawer with the DrawerMenu
* Fragment
*/
private void configDrawerMenu() {
// Get the fragment instance
Fragment fragment = DrawerMenu.newInstance();
// Insert the fragment by replacing any existing fragment
mFragmentManager
.beginTransaction()
.replace(R.id.left_drawer_container, fragment,
DrawerMenu.FRAGMENT_TAG).commit();
}
private void createFragments() {
if(isFirstTimeOpeningApp()){
showWelcomeFragment();
}else{// Add Overview fragment
showOverviewFragment();
}
//Set the preference and the welcome view dont show again
storeFirstTimeOpeningApp();
// Operation Handler
configurateOperationHandler();
}
private void showWelcomeFragment() {
...
}
private boolean isFirstTimeOpeningApp() {
SharedPreferences sharedPreferences = getSharedPreferences(Constant.SHARED_PREF, Context.MODE_PRIVATE);
Boolean firstTime=sharedPreferences.getBoolean(Constant.SHARED_PREF_FIRST_TIME, true);
return firstTime;
}
private void storeFirstTimeOpeningApp() {
SharedPreferences sharedPreferences = getSharedPreferences(Constant.SHARED_PREF, Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();
editor.putBoolean(Constant.SHARED_PREF_FIRST_TIME, false);
editor.commit();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
/** Show the Overview Fragment */
private void showOverviewFragment() {
...
}
}
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Holo_bg_grey" />
<!-- The navigation drawer -->
<RelativeLayout
android:id="@+id/drawerContainer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start" >
<FrameLayout
android:id="@+id/left_drawer_container"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@color/Holo_bg_grey" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment