開源庫地址: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寫進去
<?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中
@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); }