换一种弹簧风格的侧滑菜单吧!SpringMenu的使用

JPSpringMenu

Github Project传送门
SpringMenu是一款滑动菜单,类似AndroidResidemenu,SlidingMenu,和其他滑动菜单之间最大的区别是:它提供的灵活性弹跳,结合了Facebook提供的强大动画库Rebound 。说那么多,还是看演示图比较好

Design Sketch(PS技术不够,不清晰掉色)

main.gif


Usage

Gradle

dependencies {
    compile 'com.jpeng:jpspringmenu:$latestVersion'
}

在Activity内初始化Menu

    // R.layout.view_menu 是你自定义的Menu View的资源ID
    SpringMenu menu = new SpringMenu(this,R.layout.view_menu);
    
    // 为菜单做各种各样的设置...

不要忘记在Activity重写dispatchTouchEvent

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
         return menu.dispatchTouchEvent(ev);
    }

通过SpringConfig,你可以改变菜单和子布局的弹性速度和力量

    // 另一种方式来构建SpringConfig是frombouncinessandspeed
    mSpringMenu.setMenuSpringConfig(SpringConfig.fromOrigamiTensionAndFriction(20,3));
    mSpringMenu.setChildSpringConfig(SpringConfig.fromOrigamiTensionAndFriction(20, 5));

如果有滑块控件和菜单的一些冲突,你可以试试addignoreview忽略它们

    mSpringMenu.addIgnoreView(...);

MenuListener可以用来监听菜单事件的变化,里面有三种回调方法:

    //打开后的回调
    void onMenuOpen();
    //关闭后的回调
    void onMenuClose();
    
    /**
     * 当菜单正在被打开或者被关闭时,这个方法将会被回调(包含拖动弧度)
     * @value: 0f-2f,0f表示菜单关闭,2f则表示打开
     * @bouncing: 这个布尔值用来判断菜单是否在反弹状态
     * 当处于反弹状态时,这个值无限趋近于2f,否则就是0f
     */
    void onProgressUpdate(float value,boolean bouncing);

剩余部分较为重要的Api

     // 内容页变暗的效果
     setFadeEnable(boolean);
     
     // 允许菜单开始拖动的距离
     setDragOffset(float);
     
     setMenuListener(MenuListener);
     
     setDirection(int direction);

About Me

我是在读大三的学生,来自一所非985非211吧,写作不容易,求大神给个star吧

Final

至于菜单弹簧效果实现的原理,稍后再解析!!!

最后感谢AndroidResideMenu这awesome project给了我思路,顺带一句其实这个开源作者是我的...(秘密不能说!)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,533评论 25 709
  • 项目中需要使用到侧滑菜单,由于一直有点抵触使用第三方库,因为大部分库为了兼容各种需求,封装得大都比较笨重,所以就在...
    david_zhw阅读 2,890评论 0 7
  • 小的时候对于流浪的印象,最初来自于三毛的《橄榄树》。那时候对歌词的寓意和背景一无所知,只记得最后的歌词—— 不要问...
    木木山豆阅读 2,726评论 7 8
  • 有个来自哥伦比亚(地方,不是学校)的团队做了一个点餐的应用,并决定把它带来亚洲碰碰运气。 简单地讲,你可以走着走着...
    钛点在简书阅读 1,364评论 0 5
  • 作为程序员,时时刻刻接触着互联网,而上网就像个网络爬虫,从一个网页看到一个链接然后忍不住点进去,再看到一堆连接然后...
    欢醉阅读 511评论 4 4