Android Open Source - unmp Drawer Activity






From Project

Back to project page unmp.

License

The source code is released under:

MIT License

If you think the Android project unmp 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.parnswir.unmp;
//  w w w .j av a 2  s.  c o m
import java.util.Observer;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;

import com.parnswir.unmp.core.C;

public abstract class DrawerActivity extends Activity implements Observer {
  
  protected DrawerState state;
  protected AbstractFragment currentFragment;
  
  public View currentLayout;
  public int selectedItem = 0;
  
  
  public DrawerActivity() {
    
  }
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.drawer_layout);
        state = new DrawerState();
    showFragment(selectedItem);
    initializeDrawer();
  }
  
  
  @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        state.mDrawerToggle.onConfigurationChanged(newConfig);
    }
  
  @Override
  public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (!currentFragment.onKeyUp(keyCode, event)) {
        switch (keyCode) {
          case KeyEvent.KEYCODE_MENU:
              if (state.mDrawerLayout.isDrawerOpen(state.mDrawer)) {
                state.mDrawerLayout.closeDrawer(state.mDrawer);
              } else {
                state.mDrawerLayout.openDrawer(state.mDrawer);
              }
              return true;
          case KeyEvent.KEYCODE_BACK:
            if (selectedItem != 0) {
              selectItem(0);
              return true;
            }
        }
        return super.onKeyUp(keyCode, event);
    }
    return true;
  }  
  
  protected void initializeDrawer() {    
    state.mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    state.mDrawer = (RelativeLayout) findViewById(R.id.left_drawer);
    state.mDrawerList = (ListView) findViewById(R.id.left_drawer_list);
    
    state.mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, state.drawerItems));
    state.mDrawerList.setOnItemClickListener(new DrawerItemClickListener());    
    state.mDrawerList.setItemChecked(selectedItem, true);
    
    state.mDrawerToggle = new ActionBarDrawerToggle(this, state.mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) {

            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                invalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                invalidateOptionsMenu();
            }
        };

        state.mDrawerLayout.setDrawerListener(state.mDrawerToggle);
        state.isInitialized = true;
          
        getActionBar().setDisplayHomeAsUpEnabled(true);
        state.mDrawerToggle.syncState();
  }
  
  
  private class DrawerItemClickListener implements ListView.OnItemClickListener {
      @Override
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
          selectItem(position);
      }
  }


  protected void selectItem(int position) {
    if (selectedItem != position) {
      selectedItem = position;
      state.mDrawerList.setItemChecked(position, true);
      showFragment(position);
    }
    closeDrawerDelayedBy(100);
  }
  
  
  private void closeDrawerDelayedBy(int milliseconds) {
    new Handler().postDelayed(new Runnable() {
          @Override
          public void run() {
            state.mDrawerLayout.closeDrawer(state.mDrawer);
          }
      }, milliseconds);
  }
  
  protected void showFragment(int position) {
    currentFragment = (AbstractFragment) getFragment(position);
      FragmentManager fragmentManager = getFragmentManager();
      fragmentManager.beginTransaction()
                     .replace(R.id.content_frame, currentFragment)
                     .commit();
  }
  
  
  private Fragment getFragment(int position) {
    Class<?> fragmentClass = C.FRAGMENTS[position].handler;
    return getFragmentInstance(fragmentClass);
  }
  
  
  private Fragment getFragmentInstance(Class<?> fragmentClass) {
    try {
      return (Fragment) fragmentClass.newInstance();
    } catch (InstantiationException e) {
    } catch (IllegalAccessException e) {
    }
    return null;
  }

}




Java Source Code List

com.parnswir.unmp.AbstractFragment.java
com.parnswir.unmp.DirectoryChooserDialog.java
com.parnswir.unmp.DrawerActivity.java
com.parnswir.unmp.DrawerState.java
com.parnswir.unmp.LibraryFragment.java
com.parnswir.unmp.ListFragment.java
com.parnswir.unmp.MainActivity.java
com.parnswir.unmp.PlayerFragment.java
com.parnswir.unmp.PlayerService.java
com.parnswir.unmp.PlaylistsFragment.java
com.parnswir.unmp.SplashActivity.java
com.parnswir.unmp.core.AlbumCoverRetriever.java
com.parnswir.unmp.core.C.java
com.parnswir.unmp.core.CoverList.java
com.parnswir.unmp.core.DatabaseUtils.java
com.parnswir.unmp.core.IceCreamSandwichNotificationBuilder.java
com.parnswir.unmp.core.IconicAdapter.java
com.parnswir.unmp.core.ImageLoader.java
com.parnswir.unmp.core.ImageRetriever.java
com.parnswir.unmp.core.JellybeanNotificationBuilder.java
com.parnswir.unmp.core.MemoryCache.java
com.parnswir.unmp.core.MusicDatabaseHelper.java
com.parnswir.unmp.core.NotificationBuilder.java
com.parnswir.unmp.core.ProgressObservable.java
com.parnswir.unmp.core.ProjectResources.java
com.parnswir.unmp.core.Utils.java
com.parnswir.unmp.media.DefaultFileHandler.java
com.parnswir.unmp.media.FileAdditionThread.java
com.parnswir.unmp.media.FileCrawlerThread.java
com.parnswir.unmp.media.FileHandler.java
com.parnswir.unmp.media.FileRemovalThread.java
com.parnswir.unmp.media.MP3Handler.java
com.parnswir.unmp.media.MediaInformation.java
com.parnswir.unmp.media.MediaPlayerStatus.java
com.parnswir.unmp.media.PlaylistHandler.java
com.parnswir.unmp.playlist.MediaFile.java
com.parnswir.unmp.playlist.PlaylistElement.java
com.parnswir.unmp.playlist.Playlist.java
com.parnswir.unmp.playlist.parser.PlaylistParser.java
com.parnswir.unmp.playlist.parser.WPLParser.java