android侧滑菜单置顶,Android 高大上的侧滑菜单DrawerLayout,解决了不能全屏滑动的问题...

4c3bd86b18f535a2be0f98f37bb97c0e.png

DrawerLayout预览

DrawerLayout主要功能就是 实现侧滑菜单效果的功能,并且可以通过增加一些设置来实现高大上的效果,那么就请看动态图:

652b713cc7dce6eaf55d0790de50064e.gif

注意左上角那个图标,有木有很好玩,哈哈...

接下来就介绍如何实现这一功能

1. 在项目对应的build.gradle中添加依赖

dependencies {

...//其他代码

compile ‘com.android.support:appcompat-v7:24.0.0‘compile‘com.android.support:design:24.0.0‘...//其他代码

}

2. 添加ToolBar,创建toolbar.xml文件

android:id="@+id/toolbar"android:clipToPadding="true"android:fitsSystemWindows="true"android:layout_width="match_parent"android:layout_height="wrap_content"app:title="资讯"app:titleTextColor="#fff">

3. 在main.xml中添加DrawerLayout

xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">

android:id="@+id/drawerlayout"android:layout_width="match_parent"android:layout_height="match_parent">

android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent">

android:id="@+id/left"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="left">

android:id="@+id/right"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="right">

DrawerLayout一般分为三个部分 主内容,左侧菜单,右侧菜单每个部分的内容自行设置,我是采用Fragment方式设置内容,这里仅供参考

//新建Fragment,具体内容我就不详细说了

fragmentMain = newFragmentMain();//添加内容,比较简单的

getSupportFragmentManager().beginTransaction().replace(R.id.main, fragmentMain).commit();

到此为止已经初步实现了侧滑菜单的功能,来看一下效果

32cf84ca6fa54c8599fb38a3de678937.gif

DrawerLayout初效果.gif

然后,就是给侧滑按钮添加效果了

1. 在此之前要进行view的初始化

mDrawerLayout =(DrawerLayout) findViewById(R.id.drawerlayout);

toolbar= (Toolbar) this.findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

2. 通过ActionBarDrawerToggle来完成效果,操作很简单

mToggle = new ActionBarDrawerToggle(HomeActivity.this,

mDrawerLayout,

toolbar,

R.string.open,

R.string.close);

mToggle.syncState();

mDrawerLayout.addDrawerListener(mToggle);

这样就结束了

最后就是解决DrawerLayout不能全屏滑动的问题

private void setDrawerLeftEdgeSize (Activity activity, DrawerLayout drawerLayout, floatdisplayWidthPercentage) {if (activity == null || drawerLayout == null) return;try{//找到 ViewDragHelper 并设置 Accessible 为true

Field leftDraggerField =drawerLayout.getClass().getDeclaredField("mLeftDragger");//Right

leftDraggerField.setAccessible(true);

ViewDragHelper leftDragger= (ViewDragHelper) leftDraggerField.get(drawerLayout);//找到 edgeSizeField 并设置 Accessible 为true

Field edgeSizeField = leftDragger.getClass().getDeclaredField("mEdgeSize");

edgeSizeField.setAccessible(true);int edgeSize =edgeSizeField.getInt(leftDragger);//设置新的边缘大小

Point displaySize = newPoint();

activity.getWindowManager().getDefaultDisplay().getSize(displaySize);

edgeSizeField.setInt(leftDragger, Math.max(edgeSize, (int) (displaySize.x *displayWidthPercentage)));

}catch(NoSuchFieldException e) {

}catch(IllegalArgumentException e) {

}catch(IllegalAccessException e) {

}

}

直接调用这个方法即可!最后一个参数 传 1,即可实现全屏滑动。如果你想让右侧菜单也是全屏,只要将对应的 "mLeftDragger" 改为 "mRightDragger"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值