分享

动手打造史上最简单的 Recycleview 侧滑菜单

 scxingm 2017-08-30

每日推荐


推荐一个Aspect的系列:

  • AspectJ(一) 一些该了解的概念 

    http:///RCPqgPn

  • AspectJ(二) 入门--配置AspectJ 环境

    http:///RCP5pP4

  • AspectJ(三) 语法

    http:///RCP5GmR

  • AspectJ(四) 高级用法--Field

    http:///RCP5Svx

  • AspectJ(五) 高级语法--Annotation

    http:///RCP50Kh

  • Aspectj与androidM的Permission简单结合

    http:///RCuCwSh


本文作者


作者:王英豪

链接:http://blog.csdn.net/yhaolpz/article/details/77366154

本文由作者投稿推送。


在实现 Recycleview 侧滑菜单时起初使用了开源库 SwipeRecyclerView (https://github.com/yanzhenjie/SwipeRecyclerView),此库功能广泛,但无法满足个人需求,这是因为此库中存在以下局限性:


  1. 菜单文字一旦确定将无法修改

  2. 侧滑时整个 item 都会滑动

  3. 无法自定义菜单样式


只能自己实现了,查阅资料后发现,较多通过 DragHelper 实现的,它是一个手势滑动辅助工具,使 item 可以滑动,然后…… , 等等!既然目的是让 item 可以滑动,那为什么不直接在 item 布局中使用 HorizontalScrollView 呢?


参考鸿神的Android 自定义控件打造史上最简单的侧滑菜单,标题致敬一波~


首先是自定义 SlidingMenu :



在 item 布局中应用 SlidingMenu,注意 SlidingMenu 中是按照顺序区分 content 和 menu 的,所以布局文件中顺序要对应一致 :




OK~ ,这就实现了具有侧滑菜单的 Recycleview 了!不需要 DragHelper !不需要自定义 Recycleview !不需要处理事件分发!是不是超级简单?与其自定义 Recycleview 然后关联 item 实现,为什么不直接改变 item 布局实现!


简单使用一下这个侧滑菜单,首先是适配器代码:



MainActivity 如下:



效果如下:



至此已经实现了最简单的 Recycleview 侧滑菜单,但 item 的菜单可以同时打开,一般情况下,当触摸其他 item 时应该关闭已打开的菜单,我们可以将打开的 item 引用记录下来,方便及时关闭。


改造 SlidingMenu,添加以下方法 :



修改 onTouchEvent 方法:



显然我们将已打开的 item 记录在适配器中,在 Adapter 中添加记录与关闭方法:



OK~ 非常简单,看下效果,当触摸其他 item 时已打开的 item 就会自动关闭啦:



在实际使用时,一般需要监听侧滑菜单的点击事件,此方法中的侧滑菜单是 item 的一部分,对其监听也就非常简单,同样,修改菜单文字也非常简单。下面通过改变菜单文字实现置顶/取消置顶功能。


改造适配器,直接附上 MyAdapter 全部代码:




其中 imageView 为 item 布局中的 item 内容,menuText 为菜单文字控件,当置顶时 item 颜色变为黄色,菜单文字变为“取消置顶”。


菜单点击事件以接口形式公开,代码十分简单,下面是 MainActivity :



实现效果:



OK~ 成功弥补第三方库“菜单文字一旦确定将无法修改”这个致命缺陷了。有的场景下,我们不希望整个 item 侧滑,比如:



使用第三库时很难实现这样的需求,而此方法就非常容易了,只需要把底部控件置于 SlidingMenu 外部就可以了,以下是 item 布局:



轻松解决了 “菜单文字一旦确定将无法修改“,“侧滑时整个 item 都会滑动”这两个缺陷,最后一个“无法自定义菜单样式”,第三方库中高度集成了菜单的生成方式,只能设置单一的文字和图标,有时无法满足需求,而此方法实现自定义菜单样式十分简单,在 item 中直接编写 menu 布局即可。


总结


Recycleview 侧滑菜单大多的实现思路是:通过自定义 Recycleview 或 Adapter 提供创建菜单方法,然后内部再关联到各个 item 改变其布局,从而使 item 具有侧滑功能,优点是使用简单,但是不够灵活,比如开始提到的三个局限性。


本文实现方法直接在 item 布局中进行设置,使 item 具有侧滑功能,实现过程及其简单,易于理解,应该是最简单的 Recycleview 侧滑菜单了,希望能给你带来帮助。


源码 : https://github.com/yhaolpz/SlidingMenu


参考文章

  • http://blog.csdn.net/lmj623565791/article/details/39185641

  • https://github.com/yanzhenjie/SwipeRecyclerView

  • http://blog.csdn.net/u010386612/article/details/52957095

  • http://www.jianshu.com/p/94e56cf2cd3c


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多