Reputation: 692
I want to use Google's animation to turn the navigation icon to an arrow upon opening of the navigation bar and turn it back to a drawer navigation icon. I am also wondering if I can keep the action bar stationary when moving to another activity.
---EDIT---
This question is out of date and no longer relevant as the navigation drawer in material design has been provided for developers in an easy and seemless process that no longer requires developers to add the hamburger side menu to back arrow animation as it is already provided.
menutitles = getResources().getStringArray(R.array.sidebar);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.slider_list);
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
R.layout.list_tem, R.id.title, menutitles));
// Set the list's click listener
mTitle = mDrawerTitle = getTitle();
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.mipmap.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);
getActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
/**
* Called when a drawer has settled in a completely open state.
*/
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
// Set the drawer toggle as the DrawerListener
mDrawerLayout.setDrawerListener(mDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
/** * When using the ActionBarDrawerToggle, you must call it during * onPostCreate() and onConfigurationChanged()... */
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState(); }
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggles
mDrawerToggle.onConfigurationChanged(newConfig);
}
/** Swaps fragments in the main content view */
private void selectItem(int position) {
switch (position){
case 0:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
break;
case 1: Intent intent2 = new Intent(this, Time.class);
startActivity(intent2);
finish();
break;
case 2: Intent intent3 = new Intent(this, Temperature.class);
startActivity(intent3);
finish();
break;
case 3: Intent intent4 = new Intent(this, Weight.class);
startActivity(intent4);
finish();
break;
case 4: Intent intent5 = new Intent(this, Length.class);
startActivity(intent5);
finish();
break;
case 5: Intent intent6 = new Intent(this, Money.class);
startActivity(intent6);
finish();
break;
case 6:
Intent intent1 = new Intent(this, Metric.class);
startActivity(intent1);
finish();
break;
case 7:
Intent intent7 = new Intent(this, Food.class);
startActivity(intent7);
finish();
break;
case 8:
Intent intent8 = new Intent(this, Data.class);
startActivity(intent8);
finish();
break;
}
// Create a new fragment and specify the planet to show based on position
// Highlight the selected item, update the title, and close the drawer
mDrawerList.setItemChecked(position, true);
setTitle("Converjz");
mDrawerLayout.closeDrawer(mDrawerList);
}
@Override
public void setTitle(CharSequence title) {
mTitle = title;
getActionBar().setTitle(mTitle);
}
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
selectItem(position);
}
}
}
Upvotes: 0
Views: 744
Reputation: 39191
I want to use Google's animation to turn the navigation icon to an arrow upon opening of the navigation bar and turn it back to a drawer navigation icon
Looking at the constructor call, it's evident that you're using the v4 support version of the ActionBarDrawerToggle
. If you want the hamburger-arrow animation, you need to use the v7 appcompat version.
To do this, first add the v7 appcompat library to your project. Then, in the ActionBarDrawerToggle
import
statement, change v4
to v7
, and drop the R.mipmap.drawer
argument in the constructor call.
import android.support.v7.app.ActionBarDrawerToggle;
...
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.string.drawer_open, R.string.drawer_close) {...}
I am also wondering if I can keep the action bar stationary when moving to another activity.
If you want to use the Navigation Drawer pattern, you should be using Fragment
s for the different sections, rather than opening a new Activity
for each. Given the comments in your code, the example you've followed demonstrates how to do that.
Upvotes: 1