Android侧滑菜单开源库SlidingMenu使用
开源库地址:https://github.com/jfeinstein10/SlidingMenu
一、SlidingMenu导入
1、首先要在GitHub下载库包并解压,将SlidingMenu-master目录下的library文件夹拷贝到自己的Project的app\libs目录下,然后我把文件夹名“library”改成“SlidingMenu”了
2、SlidingMenu目录下的build.gradle文件需要更改,主要是一些sdk和tools的版本,和app目录下的build.gradle文件对应着改,还有classpath需要改成推荐的版本
3、现在就可以导入了,File -> New -> Import Module,然后将SlidingMenu的完整路径(e.g. “C:\Demo\app\libs\SlidingMenu”)填写就可以了
4、最后再在app目录下的build.gradle文件中追加一条“compile project(':SlidingMenu')”,然后Build一下Project就大功告成了
二、SlidingMenu使用
方法一:
SlidingMenu slidingMenu = new SlidingMenu(this);
slidingMenu.setMode(SlidingMenu.LEFT | SlidingMenu.RIGHT); //Menu所在位置
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN | //全屏滑动有效
SlidingMenu.TOUCHMODE_MARGIN | //边缘滑动有效
SlidingMenu.TOUCHMODE_NONE); //滑动无效
slidingMenu.setShadowWidthRes(R.dimen.shadow_width); //menu边缘阴影宽度
slidingMenu.setShadowDrawable(R.drawable.shadow); //阴影图片
slidingMenu.setFadeDegree(0.35f); //menu褪色程度
slidingMenu.setBehindOffsetRes(R.dimen.behind_width); //滑动后内容部分还剩余的宽度
slidingMenu.setBehindWidthRes(R.dimen.behind_width); //滑动后菜单显示宽度
slidingMenu.setBehindScrollScale(0.5f); //菜单滚动速度比内容滚动速度。。。
slidingMenu.setMenu(R.layout.menu); //设置菜单部分布局
RecyclerView recyclerView = new RecyclerView(this);
slidingMenu.setSelectedView(recyclerView);
slidingMenu.setSelectorDrawable(R.drawable.avatar);
slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW | //滑动部分包括ActionBar
SlidingMenu.SLIDING_CONTENT); //不包括ActionBar
setBehindOffsetRes和setBehindWidthRes需要二选一,不可以同时使用,另外上面的代码只是拿来说明SlidingMenu是怎么使用的,不能直接拿来运行。需要运行的话需要把一些函数的多个参数改成一个,setBehindOffsetRes和setBehindWidthRes保留一个。
方法二:
public class MainActivity extends SlidingActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setBehindContentView(R.layout.menu);
SlidingMenu slidingMenu = getSlidingMenu();
slidingMenu.setMode(SlidingMenu.RIGHT);
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
slidingMenu.setShadowDrawable(R.drawable.shadow);
slidingMenu.setFadeDegree(0.35f);
slidingMenu.setBehindWidthRes(R.dimen.behind_width);
}
}
此种方法的MainActivity由于需要继承SlidingActivity,所以实现效果没有ToolBar
方法三:在xml文件里面直接把SlidingMenu写进去
|
1
2
3
4
5
6
|
<?xml version="1.0" encoding="utf-8"?><com.jeremyfeinstein.slidingmenu.lib.SlidingMenu xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/slm_main" android:layout_width="match_parent" android:layout_height="match_parent" /> |
MainActivity中
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.slidingmenu); setSlidingMenu(); //设置SlidingMenu ButterKnife.bind(this); //需要在slidingmenu.setContent(R.layout.activity_main)之后执行 }private void setSlidingMenu() { slidingMenu = (SlidingMenu)findViewById(R.id.slm_main); slidingMenu.setMode(SlidingMenu.SLIDING_WINDOW); slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); slidingMenu.setBehindWidth((int) (0.75f * getResources().getDisplayMetrics().widthPixels)); slidingMenu.setFadeDegree(0.5f); slidingMenu.setBehindScrollScale(0f); slidingMenu.setShadowDrawable(R.drawable.shadow); slidingMenu.setShadowWidthRes(R.dimen.slidingmenu_shadow_width);// slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); //因为方法三是把slidingmenu写入xml,所以无需attach slidingMenu.setMenu(R.layout.menu_slidingmenu); slidingMenu.setContent(R.layout.activity_main); } |


浙公网安备 33010602011771号