本篇介绍第三方组件侧边栏菜单Slidingmenu的使用
下载Slidingmenu并编译aar文件
由于Slidingmenu的源码比较早,一些配置项和语法已近不适用,所以下载后需要进行修改以适应本机as的编译环境。
1、从GitHub上下载(https://github.com/jfeinstein10/SlidingMenu)
2、在as里打开现有工程,选择\SlidingMenu-master\library路径。
3、编辑配置件build.gradle
- build:gradle的版本号指定为本机的
- 3个SdkVersion 指定为本机的
- 上下两个repositories 把常用的库都加上
buildscript {
repositories {
jcenter()
mavenCentral()
google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
apply plugin: 'android-library'
dependencies {
implementation 'com.android.support:support-v4:13.0.0'
}
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 15
targetSdkVersion 28
}
sourceSets {
main {
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
manifest.srcFile 'AndroidManifest.xml'
}
}
}
repositories {
jcenter()
mavenCentral()
google()
}
4、编辑配置件manifest,把里面的标签都删掉
uses-sdk android:minSdkVersion=“15” android:targetSdkVersion=“28” />
5、CustomViewAbove.java文件 有个FloatMath.sin方法 改为 Math.sin
6、完成以上修改后,先用小锤子Sync一下。
7、如果没问题,则双击工具assembleRelease进行build。最后生成的aar文件在\SlidingMenu-master\library\build\outputs\aar文件夹下。
工程中添加aar文件
1、复制aar文件到app目录下的libs
2、修改app的gradle,如下图:
3、点击右上角的Syns Now。
4、完成后,可以在这里看到:
SlidingMenu的使用
使用方法只需两步:
1、在需要侧边菜单的Activity的onCreate方法中加入以下代码:
SlidingMenu slidingmenu = new SlidingMenu(this);
slidingmenu.setMode(SlidingMenu.LEFT);//设置滑出位置
slidingmenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//设置滑出宽度
slidingmenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置可滑动操作的范围,一般是全屏
slidingmenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//设置挂载的Activity
slidingmenu.setMenu(R.layout.slidingmenu);//设置菜单布局文件
2、在layout文件夹中,添加菜单的布局xml:
<?xml version="1.0" encoding="utf-8"?>
<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/slidingmenu"
android:background="#ff999999"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮1" />
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮2" />
<Button
android:id="@+id/button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="按钮3" />
</LinearLayout>
</com.jeremyfeinstein.slidingmenu.lib.SlidingMenu>
其它
1、一个Activity可以加多个菜单SlidingMenu,左滑右滑都可以。
2、若让SlidingMenu响应系统菜单按钮,则在Activity中加入以下代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_MENU:
slidingmenu.toggle(true);
break;
}
return super.onKeyDown(keyCode, event);
}
3、菜单中控件的点击事件,与正常无异:
findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SlidingmenuActivity.this, "啊 你点击了我!", Toast.LENGTH_SHORT).show();
}
});