Android控件之侧滑菜单
2016-10-07 18:01
309 查看
Android控件之侧滑菜单
界面搭建
可以include内嵌一个线性布局,可上下滑动的listView,设置菜单背景,菜单上面的按钮按下和松开的颜色(可以在xml中设置),去掉标题设置Window.FEATURE_NO_TITLE。(可用抽取方式设置成bt_style来快速形成多个button)。布局测量和摆放规则
在自定义的ViewGroup中,将侧滑菜单放在主界面的左边,指定菜单的宽高(通过measure测量来计算宽高)。响应用户的触摸事件
onTouchEvent()来响应用户触摸事件来完成菜单和主页面的滑动。处理触摸事件,不断判断菜单是否超出边界并限定左右边界,调用getScrollX()方法来获取触摸move和down的位置,(downX-moveX)为平滑的距离,调用scrollTo,scrollBy方法来使菜单和主界面实现平滑效果。 计算将要滚动到的位置, 判断是否会超出去, 超出去了.不执行scrollBy。
处理侧滑事件,根据当前滚动到的位置, 和左面板的一半进行比较(getScrollX() < leftCenter),来判定是否打开,切换成菜单面板或主面板。
int leftCenter = (int) (- getChildAt(0).getMeasuredWidth() / 2.0f); if(getScrollX() < leftCenter){ // 打开, 切换成菜单面板 currentState = MENU_STATE; updateCurrentContent(); }else { // 关闭, 切换成主面板 currentState = MAIN_STATE; updateCurrentContent(); }
并维持动画的继续,完成菜单页面的切换, 并重新绘制界面。
public void computeScroll() { super.computeScroll(); if(scroller.computeScrollOffset()){ // 直到duration事件以后, 结束 // true, 动画还没有结束 // 获取当前模拟的数字 也就是要滚动到的位置 int currX = scroller.getCurrX(); //System.out.println("currX: " + currX); scrollTo(currX, 0); invalidate(); // 重绘界面-> drawChild() -> computeScroll();循环 } }
添加菜单按钮的点击事件并完善
添加onInterceptTouchEvent()事件,设置菜单按键的move和down事件,并设置斜着的方向超出一定距离时才生效。代码实现
https://github.com/Threepages/slidingMenu谢谢观看。
附:github有更好的前辈写的SlidingMenu,地址:
https://github.com/jfeinstein10/SlidingMenu
相关文章推荐
- android左右侧滑菜单控件的简易实现
- Android 中 SwipeLayout一个展示条目底层菜单的侧滑控件源码解析
- Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件
- android L 新控件侧滑菜单DrawerLayout 使用教程
- Android 打造完美的侧滑菜单/侧滑View控件
- Android控件View打造完美的自定义侧滑菜单
- 自定义Android侧滑菜单控件
- Android自定义LinearLayout实现左右侧滑菜单,完美兼容ListView、ScrollView、ViewPager等滑动控件
- android侧滑菜单控件DrawerLayout使用方法详解
- Android侧滑菜单控件DrawerLayout使用详解
- Android:UI控件DrawerLayout、Fragment、SlidingLayout、侧滑菜单 推荐
- Android仿酷狗音乐自定义侧滑菜单控件简单实现
- Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件
- Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件(转)
- Android:自定义侧滑菜单控件
- [android ui]官方侧滑菜单控件Navigation Drawer
- Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现
- android文章学习 侧滑菜单实现
- android自定义侧滑菜单slidmenu
- Android滑动菜单特效实现,仿人人客户端侧滑效果