您的位置:首页 > 移动开发 > Android开发

Android ActionBarDrawerToggle、DrawerLayout、ActionBar 结合

2016-01-14 14:21 603 查看
ActionBarDrawerToggle是一个开关。用于打开/关闭DrawerLayout抽屉

ActionBarDrawerToggle 提供了一个方便的方式来配合DrawerLayout和ActionBar。以实现推荐的抽屉功能。

即点击ActionBar的homebutton,就可以弹出DrawerLayout抽屉。

在Activity中的两个回调函数中使用它:

onConfigurationChanged

onOptionsItemSelected

调用ActionBarDrawerToggle.syncState() 在Activity的onPostCreate()中。指示,ActionBarDrawerToggle与DrawerLayout的状态同步,并将ActionBarDrawerToggle中的drawer图标。设置为ActionBar的Home-Button的icon

关于DrawerLayout就不多说了,请移步这里 /article/2234631.html

在这个官方的样例中,已经实现了本文所要讲述的内容。

总体的效果呢,须要支持ActionBar。support-v7包的 compat中有 ActionBarActivity可继承, 3.0以后也能够用主题的方式直接使用。不多说了

几个基本的函数调用

ActionBarDrawerToggle mDrawerToggle;
DrawerLayout mDrawerLayout;
void init() {
mDrawerLayout.setDrawerListener(new MyDrawerListener());//设置drawer的开关监听
mDrawerToggle = new ActionBarDrawerToggle(activity, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close);
}
/** activity创建完毕后 */
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();//该方法会自己主动和actionBar关联, 将开关的图片显示在了action上。假设不设置,也能够有抽屉的效果,只是是默认的图标
}

/** 菜单键点击的事件处理 */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return mDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
}
/** 设备配置改变时 */
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}

/** drawer的监听 */
private class MyDrawerListener implements DrawerLayout.DrawerListener {
@Override
public void onDrawerOpened(View drawerView) {// 打开drawer
mDrawerToggle.onDrawerOpened(drawerView);//开关状态改为opened
}

@Override
public void onDrawerClosed(View drawerView) {// 关闭drawer
mDrawerToggle.onDrawerClosed(drawerView);//开关状态改为closed
}

@Override
public void onDrawerSlide(View drawerView, float slideOffset) {// drawer滑动的回调
mDrawerToggle.onDrawerSlide(drawerView, slideOffset);
}

@Override
public void onDrawerStateChanged(int newState) {// drawer状态改变的回调
mDrawerToggle.onDrawerStateChanged(newState);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: