Android ActionBarDrawerToggle、DrawerLayout、ActionBar 结合

来源:互联网 发布:软考程序员教程 编辑:程序博客网 时间:2024/05/31 06:23

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


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

即点击ActionBar的home按钮,即可弹出DrawerLayout抽屉。


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

   onConfigurationChanged
   onOptionsItemSelected

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


关于DrawerLayout就不多说了,请移步这里 http://blog.csdn.net/jjwwmlp456/article/details/38682637

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


整体的效果呢,需要支持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创建完成后 */@Overrideprotected void onPostCreate(Bundle savedInstanceState) {super.onPostCreate(savedInstanceState);mDrawerToggle.syncState();//该方法会自动和actionBar关联, 将开关的图片显示在了action上,如果不设置,也可以有抽屉的效果,不过是默认的图标}/** 菜单键点击的事件处理 */@Overridepublic boolean onOptionsItemSelected(MenuItem item) {return mDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);}/** 设备配置改变时 */@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);mDrawerToggle.onConfigurationChanged(newConfig);}/** drawer的监听 */private class MyDrawerListener implements DrawerLayout.DrawerListener {@Overridepublic void onDrawerOpened(View drawerView) {// 打开drawermDrawerToggle.onDrawerOpened(drawerView);//开关状态改为opened}@Overridepublic void onDrawerClosed(View drawerView) {// 关闭drawermDrawerToggle.onDrawerClosed(drawerView);//开关状态改为closed}@Overridepublic void onDrawerSlide(View drawerView, float slideOffset) {// drawer滑动的回调mDrawerToggle.onDrawerSlide(drawerView, slideOffset);}@Overridepublic void onDrawerStateChanged(int newState) {// drawer状态改变的回调mDrawerToggle.onDrawerStateChanged(newState);}}


9 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果x手机触屏失灵怎么办 苹果7手机变成黑白屏怎么办 苹果手机屏不动了怎么办 苹果6老是卡屏怎么办 苹果x卡屏死机怎么办 苹果6死机卡屏怎么办 苹果手机主屏死机怎么办 苹果7手机卡屏死机怎么办 苹果6s卡死了怎么办 6s手机显示丢失锁定怎么办 酷比s9被root怎么办 垃圾清理把相片删除了怎么办 小米电脑怎么下载软件怎么办 华为手机pin码忘了怎么办 锁屏密码忘了怎么办 抖音停止运行了怎么办? 华为手机右下角有个小人怎么办 华为手机程序停止运行怎么办 华为手机不支持软件搬家怎么办 红米手机没有任务键怎么办 进网许可丢了怎么办 华为稳私空间被稳蔵怎么办 华为手机安装不了软件怎么办 华为手机自动安装软件怎么办 手机在实体店买贵了怎么办 日本买的kindle坏了怎么办 华为麦芒4屏幕失灵怎么办 华为麦芒6屏幕失灵怎么办 手机为什么总显示内存不足怎么办 小米云服务满了怎么办 魅蓝s6声音小怎么办 华为畅享7s丢失怎么办 华为耳机孔坏了怎么办 苹果手机耳机插孔坏了怎么办 荣耀8听筒声音小怎么办 荣耀8听筒音量小怎么办 华为荣耀6声音小怎么办 华为荣耀v8通话声音小怎么办 华为p20没有耳机孔怎么办 华为荣耀手机耳机声音小怎么办 小米5x显示耳机怎么办