侧滑菜单双向滑动

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

首先大家需要准备的是
SlidingMenu这个东东,具体怎么搞到,看图说话;
登录github.com 官网
这里写图片描述

注册账号,大家可以自行百度注册账号哈
这里写图片描述

搜索SlidingMenu
这里写图片描述
这里会有很多的类似这样的SlidingMenu ,都是其他大神写好上传的,咱们只要下载拿来用即可;
这里写图片描述
找到途中红色方框的下载,下载后解压即可;
这里写图片描述
这里写图片描述

其实这些就准备好了,接下咱么新建自己的项目;
这里写图片描述
我去,那我怎么写。什么都没有!!!OK,别慌,回过头,看文档
这里写图片描述

吆西,现成的代码,不用白不用,尽情的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);

设置第二个滑动出现的布局;
看看效果:
右划:
这里写图片描述

左划:
这里写图片描述

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值