/DoubleSlideMenu

Android 可以选择从左侧滑出或者右侧滑出的侧滑菜单

Primary LanguageJava

最近手上不忙,想研究一下侧滑菜单,扒拉到一篇博客

https://blog.csdn.net/qq_30948129/article/details/52282451

瞬间感觉ViewDragHelper的强大。 于是想着能不能改造一波,弄成可以根据需要从左侧或者右侧滑出的效果? 在捣鼓了一阵之后,发现只要少许的改动即可实现需求,效果如下:

使用示例:

布局使用: mainLayout要设置背景颜色或者填充满布局,不然在首次加载布局时会显示菜单布局。 切记,无论是左侧滑出还是右侧滑出,菜单布局一定要放在前面,如下所示:

 <com.bebeep.slidemenu.DoubleSlideMenu
        android:id="@+id/mDoubleSlideMenu"
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <!--菜单-->
        <FrameLayout
            android:id="@+id/fl_menu"
            android:layout_width="200dp"
            android:layout_height="match_parent"
            android:background="@color/yellow">
            
	    ···

        </FrameLayout>

        <!--主界面-->
        <com.bebeep.slidemenu.MainLayout
            android:id="@+id/mMain"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/green">
            
	    ···

        </com.bebeep.slidemenu.MainLayout>
    </com.bebeep.slidemenu.DoubleSlideMenu>

可以使用的方法:

//将主layout设置到Mainlayout中,用来处理触摸拦截事件;
mMainLayout.setMySlideMenu(mDoubleSlideMenu);

//设置左滑还是右滑,可选DoubleSlideMenu.DragState.LEFT或者DoubleSlideMenu.DragState.RIGHT
mDoubleSlideMenu.setMenuLocation(DoubleSlideMenu.DragState.LEFT);

//设置菜单栏在屏幕中的占比,默认0.6f,即占屏幕60%的宽度,不能小于0或者大于1
mDoubleSlideMenu.setOffsetX(0.6f);

//侧边菜单的滑动事件监听
binding.msmParent.setOnDragstateChangeListener(new DoubleSlideMenu.onDragStateChangeListener() {
       @Override
       public void onOpen() {
           Log.e("TAG","open");
       }

       @Override
       public void onClose() {
           Log.e("TAG","close");
       }

       @Override
       public void onDraging(float fraction) {
           //Log.e("TAG","Draging:"+fraction);
       }
});        

如何引入到项目中:

方法一(推荐)、直接在app的build.gradle中添加:

dependencies {
     ···
     implementation 'com.bebeep.slidemenu:slidemenu:1.2'
}

方法二、jitpack大法:

第1步,先在工程的主build.gradle添加如下配置:

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

第2步,在app的build.gradle中添加一下依赖:

dependencies {
        implementation 'com.github.bebeep:DoubleSlideMenu:v1.2'
}

方法三、直接下载本项目,然后将依赖slidemenu引入自己的项目中。