Android SlidingMenu 開源項目使用
1. SlidingMenu簡介:
SlidingMenu是一個強大的側邊欄導航框架:
是目前比較流行的設置主界面或配置界面界面的UI顯示,在主界面左滑或者右滑出現
設置界面,能方便的進行菜單各種操作。
目前主流 App 的導航欄一般有兩種:
一種是:主界面上面 3-4 個 Tab 下面搭配 ViewPager +Fragment,
另一種就是:側邊欄(如知名app 網易新聞,知乎等等這些app都使用側邊欄導航)。所以主導航超過 3 個 Tab 時,建議使用側邊
欄作爲 App 的主導航。
SlidingMenu 是一個強大的側邊欄導航框架,並且已經被一些比較牛的 App 使用
主要特點如下:
(1) 側邊欄可以是一個 Fragment,包含任何 View
(2) 使用簡單方便,支持左滑和右滑等
(3) 自定義側邊欄顯示動畫
2.SlidingMenu 總體由三個主要的類組成:
(1) SlidingMenu 繼承自 RelativeLayout,對外暴露 API 給用戶,同時在添加 CustomViewAbove 和 CustomViewBehind
(2) CustomViewAbove 繼承自 ViewGroup,主要用來處理觸摸屏事件
(3) CustomViewBehind 繼承自 ViewGroup,主要用來配置參數
,顯示側邊欄的
Menu 部分
3.SlidingMenu 常用屬性介紹:
menu.setMode(SlidingMenu.LEFT);如果只顯示左側菜單就是用LEFT,右側就RIGHT,左右都支持就LEFT_RIGHT
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//設置爲全屏區域都可以滑動
menu.setShadowDrawable(R.drawable.shadow);//設置陰影圖片
menu.setShadowWidthRes(R.dimen.shadow_width);//設置陰影圖片的寬度
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu滑出時主頁面顯示的剩餘寬度
menu.setBehindWidth(400);//設置SlidingMenu菜單的寬度
menu.setFadeDegree(0.35f);//SlidingMenu滑動時的漸變程度
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//使SlidingMenu附加在Activity上
menu.setMenu(R.layout.menu_layout);//設置menu的佈局文件
menu.toggle();//動態判斷自動關閉或開啓SlidingMenu
menu.showMenu();//顯示SlidingMenu
menu.showContent();//顯示內容
menu.setOnOpenListener(onOpenListener);//監聽slidingmenu打開時,【這個方法對右邊的slidingmenu是無效的】
slidingMenu.setOnOpenedListener(OnOpenedListener);//監聽slidingmenu完全打開
menu.OnClosedListener(OnClosedListener);//監聽slidingmenu關閉時事件
menu.OnClosedListener(OnClosedListener);//監聽slidingmenu關閉後事件
menu.setSecondaryShadowDrawable(R.drawable.shadowright);//右側菜單的陰影圖片
4.SlidingMenu 實例:
SlidingMenu
開源項目 github地址:https://github.com/jfeinstein10/SlidingMe
在gitHub 下載下來後,主要使用的 SlidingMenu項目 的 library 部分
很多老教程SlidingMenu都是基於ActionBarSherlock庫纔可運行,而在現最新的android studio下是不需要那樣的
而且不用直接引入library的新用法。
新建實例測試工程,新建文件夾 libslidingmenu。拷貝開源項目上圖紅色標註的library 庫中 src\com\jeremyfeinstein\slidingmenu\lib 下所有文件到
新建文件夾 libslidingmenu 中,修改對應的包名和引入路徑即可
如下圖:
Test 實例詳解:
1. 首先MianActivity需要繼承自libslidingmenu app 包下的SlidingFragmentActivity
2. MianActivity setContentView(R.layout.content_frame);//該layout爲一個全屏的FrameLayout
3. setBehindContentView(R.layout.menu_frame);//設置SlidingMenu使用的佈局,同樣是一個全屏的FrameLayout
必須使用FrameLayout 的佈局,整個界面被當成一塊空白備用區域 ,佈局新添加元素可以覆蓋之前的子元素
佈局代碼如下:
frame_content.xml
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/content"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
frame_left_menu.xml
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/menu"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
MainActivity 繼承 SlidingFragmentActivity 代碼:
主要實現的是左側側滑功能,設置leftmenu 主要代碼如下
LeftFragment 實現一個listView 主要代碼如下:
build 文件如下:
實現完成的效果如下: