在最新Android Studio 2.0 中导入SlidingMenu 解决方案

前记

我们在进行用户界面优化时,常常会涉及到菜单栏程序涉及开发。现在越来越流行的也被广大用户普遍接受的带有侧边栏的UI,因为用户体验更好。谈及侧边栏 UI 开发,我们通常需要导入 SlidingMenu 库。以前用 Eclipse 进行开发时还需要导入 ActionBarSherlock 库,因为版本升级很快现在只需要导入前者就可以了。同时大部分开发人员都转移到 Android Studio 阵营,Gradle 等工具更新频繁所以在导入的时候还是会遇到很多令人苦恼的小问题。在这里,我把自己导入 SlidingMenu 的过程做一个总结,供大家参考。(注意:我这里所有相关的工具到目前为止都是最新版本)

下载导入

  • 首先到 https://github.com/phodal-archive/learning-android 把 learn-android-master 文件下载到本地,解压。
  • 然后在 Android Studio 2.0 中新建工程:UsingSlidingMenu,注意此时有两个 build.gradle 文件,分别是: build.gradle(Project:UsingSlidingMenu) 和 build.gradle(Module:app)。
  • 点击:File–>New–>Import Module,找到下载好的 learning-android-master 下的 libraries 下的 SlidingMenu 库文件,点击 OK 导入。此时,左侧视图树中多了一个 build.gradle(Module:SlidingMenu) 文件。

修改配置

build.gradle(Project:UsingSlidingMenu)

这个默认不做修改,注意 Gradle 版本是2.0.0:
Project:UsingSlidingMenu

build.gradle(Module:SlidingMenu)

只修改一处,build Tools 工具版本为23.0.2:
Module:SlidingMenu

build.gradle(Module:app)

只在最后增加语句:compile project(‘:SlidingMenu’):
Module:app

settings.gradle 文件不用修改

至此 SlidingMenu 导入成功,可以放心大胆愉快地进行开发了!

项目代码

项目源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package pers.suixinsuoyu.usingslidingmenu;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;

public class MainActivity extends AppCompatActivity {

private SlidingMenu mSlidingMenu;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mSlidingMenu = new SlidingMenu(this);//新建一个 SlidingMenu 对象
mSlidingMenu.setMode(SlidingMenu.LEFT);//使菜单从左边弹出
mSlidingMenu.setBehindOffsetRes(R.dimen.sliding_menu_offset);//引用新建的200dp的尺寸文件
mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置可以全屏触摸
mSlidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//绑定 Activity
mSlidingMenu.setMenu(R.layout.slidingmenu);//绑定新建的布局文件
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//重写 onKeyDown 事件,使物理菜单键可以打开 SlidingMenu
switch (keyCode) {
case KeyEvent.KEYCODE_MENU://判断物理按键若为菜单键
mSlidingMenu.toggle(true);
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
}

布局文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff6688">

<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/slidingmenulayout">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Click me"/>
</com.jeremyfeinstein.slidingmenu.lib.SlidingMenu>

</LinearLayout>

动画效果

动画效果

参考资料

后记

其实,像这种小问题自己多琢磨一会是不成问题的,没有必要遇到点问题就到处问这个问那个。通过各种办法实在解决不了了再去向他人求助,况且很多工具更新很快导致网上的很多教程有些过时了,所以更需要我们自己动手去实践去试错了。可能有人会觉得这样浪费时间效率低,但是如果自己不琢磨不折腾就没有自己的理解印象也不深刻,自己没有深入的思考总是依赖他人的现成的答案我认为是偷懒的做法。这个话题暂且就到这里吧,仁者见仁,也不是这篇文章所要讨论的重点。

总之,我认为:潜力=自学意识+动手能力

「总有人要赢的,为什么那个人不能是我呢?」 — Kobe Bryant.