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

Android ActionBarDrawerToggle、DrawerLayout、ActionBar 结合

2015-03-02 17:44 429 查看
http://blog.csdn.net/jjwwmlp456/article/details/41206513

ActionBarDrawerToggle是一个开关,用于打开/关闭DrawerLayout抽屉

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

即点击ActionBar的home按钮,即可弹出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以后也可以用主题的方式直接使用。不多说了

几个主要的函数调用

[java] view
plaincopyprint?





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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐