两种主流的实现侧滑菜单控件的学习总结
来源:互联网 发布:c#修改浏览器数据 编辑:程序博客网 时间:2024/05/16 06:32
第一次开始研究侧滑菜单实现还是QQ加入这个功能之后吸引的我,当时就觉得这个侧滑菜单的想法简直独具匠心,使用侧滑菜单的好处必须明显,它可以无形的使我们的屏幕利用更大化,你可以假想自己的屏幕比现实还要大,那个侧滑菜单就藏在看不见的屏幕里,当我们用侧滑手势之后,就将它们从看不见的屏幕里拉入真实屏幕中,当我们使用完菜单后,又可以将它们收回到看不见的屏幕中。。。这让本来空间就有限的手机屏幕,屏幕利用率得到大大的提高。后来通过自己在网络博客论坛的寻觅,发现了两种比较便捷的能帮助我们实现侧滑菜单效果的控件:
1.Android 官方提供的support库中的DrawerLayout和ActionBarDrawerToggle控件;
2.github开源平台的开源库:AndroidResideMenu(https://github.com/SpecialCyCi/AndroidResideMenu)。
下面我将根据自己对这两个控件的使用和网上前辈资料的参考,总结出自己的使用心得。
一、DrawerLayout和ActionBarDrawerToggle控件使用
1.布局文件activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.widget.DrawerLayout android:id="@+id/drawer" android:layout_width="match_parent" android:layout_height="match_parent"> <!--内容--> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/content" android:orientation="vertical"></LinearLayout> <!--侧滑菜单左--> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/drawer" android:orientation="vertical"></LinearLayout> <!--侧滑菜单右--> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/drawer" android:orientation="vertical"></LinearLayout> </android.support.v4.widget.DrawerLayout></LinearLayout>
这里的布局编写有几个注意点:
1.显示内容的布局,即上面的“内容”布局,必须放在第一个,不然抽屉的滑动手势难以捕捉,实现不了;
2.“内容”布局的宽高要和DrawerLayout一样,因为菜单不可见的时候,内容界面会充满屏幕;
3.侧滑菜单的布局需要设置android:layout_gravity属性,start或者left表示左侧菜单,right表示右侧菜单;
4.侧滑菜单的宽度应该控制在320dp以下,不然会完全的挡住内容布局,展示不出抽屉的效果。
2.代码中MainActivity.java:
在 onCreate中初始化DrawerLayout,并将其通过ActionBarDrawerToggle与ActionBar结合,实现动画效果,这里要设置ActionBar的displayHomeAsUpEnabled属性,只有这样,才会将标题栏左侧的菜单icon显示出来,如下图:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close); mDrawerToggle.syncState(); mDrawerLayout.setDrawerListener(mDrawerToggle); getSupportActionBar().setDisplayHomeAsUpEnabled(true);//标题栏左侧菜单按钮的展示 }
为了使上面的菜单icon起作用,还必须处理actionbar上的按钮事件拦截:
@Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } int id = item.getItemId(); if (id == R.id.action_settings) { Toast.makeText(this, "action_settings", Toast.LENGTH_SHORT).show(); return true; } return super.onOptionsItemSelected(item); }
二、使用AndroidResideMenu开源框架实现类似QQ5.0的侧滑菜单效果
- 两种主流的实现侧滑菜单控件的学习总结
- 自定义高级控件打造主流的侧滑菜单控件
- 菜单功能的两种实现方法
- 侧滑菜单的实现总结
- 使用DrawerLayout实现侧滑菜单(两种写法都实现一样的布局)完美!
- 【原创】两种分页控件的实现
- MFC中弹出菜单的两种形式总结
- DrawerLayout侧拉菜单的两张实现方式
- CSS 实践:两种实现下拉菜单的方法
- CSS 实践:两种实现下拉菜单的方法
- TOC右键菜单的两种实现方式
- shell实现菜单选择的两种方法
- Android底部菜单的两种实现方式
- 下拉菜单的两种实现方式:CSS和JS
- springMVC中多数据源切换的两种主流实现方法(一)
- 两种方式实现Android侧滑菜单
- 两分钟实现 NavigationView 侧滑菜单
- android左右侧滑菜单控件的简易实现
- c#中动态对象的RuntimeTypeHandle
- 微信高级接口获取用户基本信息
- 杭电1251 统计难题(字典树)
- Enigma Protector脱壳学习记录
- HTML5 canvas 绘制圆形
- 两种主流的实现侧滑菜单控件的学习总结
- HttpContext.Current.User.Identity.Name获得不了登录名
- sso
- 把一个有规律的字符串分成一句话,首字母大写其他小写
- java 多线程读取多个文件 和 不用线程读取多个文件
- codility minAveTwoSlice
- 通过mmap函数快速实现文件复制
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android单元测试时如何使用log查看输出结果