Android实现双向滑动特效的实例代码实现双向滑动特效的实例代码
记得在很早之前,我写了一篇关于Android滑动菜单的文章,其中有一个朋友在评论中留言,希望我可以帮他将这个滑动菜单
改成双向滑动的方式。当时也没想花太多时间,简单修改了一下就发给了他,结果没想到后来却有一大批的朋友都来问我要这
份双向滑动菜单的代码。由于这份代码写得很不用心,我发了部分朋友之后实在不忍心继续发下去了,于是决定专门写一篇文
章来介绍更好的Android双向滑动菜单的实现方法。
在开始动手之前先来讲一下实现原理,在一个Activity的布局中需要有三部分,一个是左侧菜单的布局,一个是右侧菜单的布
局,一个是内容布局。左侧菜单居屏幕左边缘对齐,右侧菜单居屏幕右边缘对齐,然后内容布局占满整个屏幕,并压在了左侧
菜单和右侧菜单的上面。当用户手指向右滑动时,将右侧菜单隐藏,左侧菜单显示,然后通过偏移内容布局的位置,就可以让
左侧菜单展现出来。同样的道理,当用户手指向左滑动时,将左侧菜单隐藏,右侧菜单显示,也是通过偏移内容布局的位置,
就可以让右侧菜单展现出来。原理示意图所下所示:
介绍完了原理,我们就开始动手实现吧。新建一个Android项目,项目名就叫做BidirSlidingLayout。然后新建我们最主要的
BidirSlidingLayout类,这个类就是实现双向滑动菜单功能的核心类,代码如下所示:
public class BidirSlidingLayout extends RelativeLayout implements OnTouchListener {
/**
* 滚动显示和隐藏左侧布局时,手指滑动需要达到的速度。
*/
public static final int SNAP_VELOCITY = 200;
/**
* 滑动状态的一种,表示未进行任何滑动。
*/
public static final int DO_NOTHING = 0;
/**
* 滑动状态的一种,表示正在滑出左侧菜单。
*/
public static final int SHOW_LEFT_MENU = 1;
/**
* 滑动状态的一种,表示正在滑出右侧菜单。
*/
public static final int SHOW_RIGHT_MENU = 2;
/**
* 滑动状态的一种,表示正在隐藏左侧菜单。
*/
public static final int HIDE_LEFT_MENU = 3;
/**
* 滑动状态的一种,表示正在隐藏右侧菜单。
*/
public static final int HIDE_RIGHT_MENU = 4;
/**
* 记录当前的滑动状态
*/
private int slideState;
/**