侧滑菜单双向滑动

大家对于滑动效果应该不会很陌生了,例如手机QQ的侧滑,直播吧的侧滑等等,对于新手来说,貌似很高大上的样子,难免会有疑问实现过程是否很复杂?需要自定View实现么?还是借助其他的工具实现呢?在这里统统抛开这些,对我而言,这些太复杂了,实现这样的效果其实没有必要考虑那么的,只需要借助一个jar包即可实现。OK ,我们走起

首先大家需要准备的是
SlidingMenu这个东东,具体怎么搞到,看图说话;
登录github.com 官网
侧滑菜单双向滑动_第1张图片

注册账号,大家可以自行百度注册账号哈
侧滑菜单双向滑动_第2张图片

搜索SlidingMenu
侧滑菜单双向滑动_第3张图片
这里会有很多的类似这样的SlidingMenu ,都是其他大神写好上传的,咱们只要下载拿来用即可;
侧滑菜单双向滑动_第4张图片
找到途中红色方框的下载,下载后解压即可;
侧滑菜单双向滑动_第5张图片
侧滑菜单双向滑动_第6张图片

其实这些就准备好了,接下咱么新建自己的项目;
侧滑菜单双向滑动_第7张图片
我去,那我怎么写。什么都没有!!!OK,别慌,回过头,看文档
侧滑菜单双向滑动_第8张图片

吆西,现成的代码,不用白不用,尽情的CV吧

    SlidingMenu menu = new SlidingMenu(this);
        // 设置是左滑还是右滑,还是左右都可以滑
        menu.setMode(SlidingMenu.LEFT_RIGHT);
        // 设置滑动的屏幕范围,该设置为全屏区域都可以滑动
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        // 设置阴影宽度
        menu.setShadowWidthRes(R.dimen.shadow_width);
        // 设置左菜单阴影图片
        menu.setShadowDrawable(R.drawable.splash_bg);
        // 设置右菜单阴影图片
        menu.setSecondaryShadowDrawable(R.drawable.splash_bg);
        // 划出时主页面显示的剩余宽度
        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        // 滑动时的渐变程度
        menu.setFadeDegree(0.35f);
        // 使SlidingMenu附加在Activity上
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        menu.setMenu(R.layout.menu);
        menu.setSecondaryMenu(R.layout.menu2);
    }

在这里帮助大家加了注释,其实就不必要再进行详细的解释了,这次咱么要实现的双向滑动,左划,右划都会出现你想要的布局,我们来分析代码;

menu.setMode(SlidingMenu.LEFT_RIGHT);

用来设置滑动方向,有三个属性:
1 SlidingMenu.LEFT_RIGHT
2 SlidingMenu.RIGHT
3 SlidingMenu.LEFT
这个不用解释了吧 咯咯

menu.setSecondaryShadowDrawable(R.drawable.splash_bg);

因为是双向滑动,需要根据手势滑动出现相应的布局,这个方法就是用来加载第二个布局;
同理:

menu.setSecondaryMenu(R.layout.menu2);

设置第二个滑动出现的布局;
看看效果:
右划:
侧滑菜单双向滑动_第9张图片

左划:
侧滑菜单双向滑动_第10张图片

其实大家如果想知其然而知其所以然,建议查看源码

public class SlidingMenu extends RelativeLayout {

    private static final String TAG = SlidingMenu.class.getSimpleName();

    public static final int SLIDING_WINDOW = 0;
    public static final int SLIDING_CONTENT = 1;
    private boolean mActionbarOverlay = false;

    /** Constant value for use with setTouchModeAbove(). Allows the SlidingMenu to be opened with a swipe * gesture on the screen's margin */
    public static final int TOUCHMODE_MARGIN = 0;

    /** Constant value for use with setTouchModeAbove(). Allows the SlidingMenu to be opened with a swipe * gesture anywhere on the screen */
    public static final int TOUCHMODE_FULLSCREEN = 1;

    /** Constant value for use with setTouchModeAbove(). Denies the SlidingMenu to be opened with a swipe * gesture */
    public static final int TOUCHMODE_NONE = 2;

    /** Constant value for use with setMode(). Puts the menu to the left of the content. */
    public static final int LEFT = 0;

    /** Constant value for use with setMode(). Puts the menu to the right of the content. */
    public static final int RIGHT = 1;

    /** Constant value for use with setMode(). Puts menus to the left and right of the content. */
    public static final int LEFT_RIGHT = 2;

    private CustomViewAbove mViewAbove;

    private CustomViewBehind mViewBehind;

    private OnOpenListener mOpenListener;

    private OnOpenListener mSecondaryOpenListner;

    private OnCloseListener mCloseListener;

别的看不懂没事,
public class SlidingMenu extends RelativeLayout{
}
这个东东应该很熟悉不过了,本质其实就是一个相对布局,根据业务需要进行相应的代码处理,学习任何的框架,控件,模式其实类似,先拿来用,如果自己的需求不能满足业务的需要,这个时候就需要回头看看这些效果是怎么实现的,看清他的本来面目,至于怎么个效果展现还不是你说的算吗?只要大家能够有一颗勤奋的求知欲,任何困难都是纸老虎,在这里,愿和那些热爱安卓的卓粉从简单的框架入手,一点一点的提高自己的代码水平,欢迎大家的学习交流!

你可能感兴趣的:(android,双向侧滑)