我想使用Google的动画在打开导航栏时将导航图标变为箭头,然后将其转回抽屉导航图标。我也想知道在转移到另一个活动时我是否可以保持动作栏静止不动。
--- --- EDIT
此问题已过时且不再相关,因为材料设计中的导航抽屉已经为开发人员提供了一个简单而无缝的过程,不再需要开发人员将汉堡包侧面菜单添加到后退箭头动画中,因为它已经是提供。
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);
}
}
}
答案 0 :(得分:1)
我想使用Google的动画在打开导航栏时将导航图标变为箭头,然后将其转回抽屉导航图标
查看构造函数调用,很明显您正在使用ActionBarDrawerToggle
的v4支持版本。如果你想要汉堡箭头动画,你需要使用v7 appcompat版本。
为此,首先将v7 appcompat库添加到项目中。然后,在ActionBarDrawerToggle
import
语句中,将v4
更改为v7
,并在构造函数调用中删除R.mipmap.drawer
参数。
import android.support.v7.app.ActionBarDrawerToggle;
...
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.string.drawer_open, R.string.drawer_close) {...}
我也想知道在转移到另一项活动时是否可以保持动作栏不动。
如果您想使用导航抽屉模式,您应该将Fragment
用于不同的部分,而不是为每个部分打开一个新的Activity
。鉴于代码中的注释,您所遵循的示例演示了如何执行此操作。