首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android双向滑动菜单完全解析,教你怎么一分钟实现双向滑动特效

2013-10-08 
Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效转载请注明出处:http://blog.csdn.net/guoli

Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9671609

记得在很早之前,我写了一篇关于Android滑动菜单的文章,其中有一个朋友在评论中留言,希望我可以帮他将这个滑动菜单改成双向滑动的方式。当时也没想花太多时间,简单修改了一下就发给了他,结果没想到后来却有一大批的朋友都来问我要这份双向滑动菜单的代码。由于这份代码写得很不用心,我发了部分朋友之后实在不忍心继续发下去了,于是决定专门写一篇文章来介绍更好的Android双向滑动菜单的实现方法。

在开始动手之前先来讲一下实现原理,在一个Activity的布局中需要有三部分,一个是左侧菜单的布局,一个是右侧菜单的布局,一个是内容布局。左侧菜单居屏幕左边缘对齐,右侧菜单居屏幕右边缘对齐,然后内容布局占满整个屏幕,并压在了左侧菜单和右侧菜单的上面。当用户手指向右滑动时,将右侧菜单隐藏,左侧菜单显示,然后通过偏移内容布局的位置,就可以让左侧菜单展现出来。同样的道理,当用户手指向左滑动时,将左侧菜单隐藏,右侧菜单显示,也是通过偏移内容布局的位置,就可以让右侧菜单展现出来。原理示意图所下所示:

                              Android双向滑动菜单完全解析,教你怎么一分钟实现双向滑动特效

介绍完了原理,我们就开始动手实现吧。新建一个Android项目,项目名就叫做BidirSlidingLayout。然后新建我们最主要的BidirSlidingLayout类,这个类就是实现双向滑动菜单功能的核心类,代码如下所示:


看起来还是挺不错的吧!并且更重要的是,以后我们在项目的任何地方都可以轻松加入双向滑动菜单功能,只需要以下两步即可:

1. 在Acitivty的layout中引入我们自定义的BidirSlidingLayout布局,并且给这个布局要加入三个直接子元素。

2. 在Activity中通过setScrollEvent方法,给一个View注册touch事件。

如此一来,一分钟实现双向滑动菜单功能妥妥的。

好了,今天的讲解到此结束,有疑问的朋友请在下面留言。

源码下载,请点击这里

20楼gz14055459昨天 18:10
嗯n不错,值得学习一下!
19楼weidi1989前天 15:06
有一个这样的开源项目做得挺好的。
18楼suannai0314前天 14:07
您的文章已被推荐到CSDN首页,感谢您的分享。
17楼cj6585256前天 13:51
赞一个
16楼u010891287前天 09:55
内容很详细啊 大神很给力
15楼gutaocslg前天 19:51
学习了,顶一个!
Re: sinyu890807前天 00:21
回复gutaocslgn上星期去常州没联系上你啊。
14楼XSL1990前天 19:32
谢谢分享
13楼weifule203天前 21:43
感觉好复杂啊,看不懂
Re: sinyu8908073天前 15:05
回复weifule20n可以把demo的源码下载下来,慢慢分析的,其实没有多复杂。
12楼wxp9991234天前 12:54
楼主您好,我怎么把listview 换成自己的布局后,就不能实现左右滑动了呢,这是什么原因呢
Re: sinyu8908073天前 16:58
回复wxp999123n用没有调用setScrollEvent()方法给你自己的布局注册绑定事件?
Re: Liyonn87443天前 19:17
回复sinyu890807n看了事件分发机制那篇文章后把这个问题解决了,真是太谢谢啦,写得真好~
Re: Liyonn87443天前 19:18
回复sinyu890807n我也遇到这个问题,我调用了setScrollEvent(),但滑动没有任何反应,不过点击 menu按键的时候,menu界面可以出来
11楼gutaocslg4天前 23:05
我还是用学校时的号码,没有换啊!
10楼xiaanming4天前 21:19
我现实的是左右随意布局的滑动,参照你之前的文章写得,哈哈
9楼lfdfhl4天前 19:08
赞一个 下班再看
8楼zshshuai4天前 17:46
楼主在苏州做android开发的吗,能否回个私信聊
7楼wjz327684天前 16:53
不错。
6楼minushuang4天前 16:20
谢谢分享
5楼weiseth5天前 12:41
马克
4楼xxm2828285天前 11:41
非常感谢
3楼jinjianxinxh5天前 09:21
楼主是在无锡?苏州?
Re: sinyu8908075天前 10:56
回复jinjianxinxhn苏州,^O^
2楼johlai5天前 08:46
大概多久可以开发安卓啊?我是java开发的
Re: sinyu8908075天前 08:55
回复johlainJava基本语法掌握了就可以开始学安卓了,用不了多长时间的。
1楼qq5309184745天前 08:45
nice,这种效果现在用得很多,学习了

热点排行