package com.example.activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.example.R;
import com.example.adapter.DrawerAdapter;
import com.example.fragment.ExampleFragment;
public class ExampleActivity extends AppCompatActivity
{
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private ListView mDrawerListView;
private CharSequence mTitle;
private CharSequence mDrawerTitle;
private String[] mTitles;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example);
setupActionBar();
setupDrawer(savedInstanceState);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
// action bar menu visibility
if(menu != null)
{
boolean drawerOpened = mDrawerLayout.isDrawerOpen(mDrawerListView);
MenuItem refresh = menu.findItem(R.id.menu_activity_example_refresh);
if(refresh != null) refresh.setVisible(!drawerOpened);
}
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// open or close the drawer if home button is pressed
if(mDrawerToggle.onOptionsItemSelected(item))
{
return true;
}
// action bar menu behavior
switch(item.getItemId())
{
case android.R.id.home:
// TODO
return true;
case R.id.menu_activity_example_refresh:
// TODO
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onPostCreate(Bundle savedInstanceState)
{
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfiguration)
{
super.onConfigurationChanged(newConfiguration);
mDrawerToggle.onConfigurationChanged(newConfiguration);
}
@Override
public void onBackPressed()
{
if(mDrawerLayout.isDrawerOpen(Gravity.LEFT))
{
mDrawerLayout.closeDrawer(Gravity.LEFT);
}
else
{
super.onBackPressed();
}
}
@Override
public void setTitle(CharSequence title)
{
mTitle = title;
getSupportActionBar().setTitle(mTitle);
}
private void setupActionBar()
{
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar bar = getSupportActionBar();
bar.setDisplayUseLogoEnabled(false);
bar.setDisplayShowTitleEnabled(true);
bar.setDisplayShowHomeEnabled(true);
bar.setDisplayHomeAsUpEnabled(true);
bar.setHomeButtonEnabled(true);
}
private void setupDrawer(Bundle savedInstanceState)
{
mTitle = getTitle();
mDrawerTitle = getTitle();
mTitles = new String[4];
mTitles[0] = getString(R.string.title_example);
mTitles[1] = getString(R.string.title_example);
mTitles[2] = getString(R.string.title_example);
mTitles[3] = getString(R.string.title_example);
Integer[] icons = new Integer[4];
icons[0] = R.drawable.ic_drawer_example;
icons[1] = R.drawable.ic_drawer_example;
icons[2] = R.drawable.ic_drawer_example;
icons[3] = R.drawable.ic_drawer_example;
// reference
mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_example_drawer_layout);
mDrawerListView = (ListView) findViewById(R.id.activity_example_drawer_list);
// set drawer
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
mDrawerListView.setAdapter(new DrawerAdapter(this, mTitles, icons));
mDrawerListView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapterView, View clickedView, int position, long id)
{
selectDrawerItem(position);
}
});
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close)
{
@Override
public void onDrawerClosed(View view)
{
getSupportActionBar().setTitle(mTitle);
supportInvalidateOptionsMenu();
}
@Override
public void onDrawerOpened(View drawerView)
{
getSupportActionBar().setTitle(mDrawerTitle);
supportInvalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
// show initial fragment
if(savedInstanceState == null)
{
selectDrawerItem(0);
}
}
private void selectDrawerItem(int position)
{
Fragment fragment;
if(position == 0) fragment = ExampleFragment.newInstance();
else if(position == 1) fragment = ExampleFragment.newInstance();
else if(position == 2) fragment = ExampleFragment.newInstance();
else if(position == 3) fragment = ExampleFragment.newInstance();
else fragment = ExampleFragment.newInstance();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.container_drawer_content, fragment).commitAllowingStateLoss();
mDrawerListView.setItemChecked(position, true);
setTitle(mTitles[position]);
mDrawerLayout.closeDrawer(mDrawerListView);
}
}