Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)
生活随笔
收集整理的這篇文章主要介紹了
Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SlidingMenu作為最常用到的幾個開源項目之一,最初,這個是在IOS上有的,之后被應用到了android上,在google自己原生態的側拉菜單NavigationDrawer沒出現之前,這個效果已經被很多應用所使用。比如今日頭條,網易新聞,人人客戶端等等。
國外用到該庫的應用APP:
你可以看到,它實際上是繼承了RelativeLayout之后去賦予你給定的layout布局,然后置于你項目的左側或則右側。 蠻多大神都是自己定義一個這樣的VIEW自己去實現這個效果,這個庫就是提供了一個方便的途徑。
二.在你的項目中引入SlidingMenu這個庫 eclipse中的流程:右擊你的項目 -- Properties -- Android ?-- Add ?選擇SlidingMenu庫 注意:可能這時你的項目會出錯或則運行時候出錯,原因就是SlidingMenu庫中已經帶有了android-support-v4.jar這個官方架包,如果你在自己的項目中也帶有這個架包的話,可能就會造成版本沖突,如果沖突了,你可以把自己項目中libs文件夾中的這個架包給刪除了。
三.在你的項目中使用這個SlidingMenu 我喜歡把SlidingMenu自定義成一個類,之后去初始化,這樣可以減少主要activity中的代碼份量,維護起來會方便的。 用代碼實現SlidingMenu這個控件: [java] view plaincopypublic?SlidingMenu?initSlidingMenu(Activity?activity)?{?? ????????SlidingMenu?localSlidingMenu?=?new?SlidingMenu(activity);?? ????????localSlidingMenu.setMode(SlidingMenu.LEFT_RIGHT);//設置左右滑菜單?? ????????localSlidingMenu.setTouchModeAbove(SlidingMenu.LEFT);//設置要使菜單滑動,觸碰屏幕的范圍?? ????????//localSlidingMenu.setTouchModeBehind(SlidingMenu.RIGHT);?? ????????localSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);//設置陰影圖片的寬度?? ????????localSlidingMenu.setShadowDrawable(R.drawable.shadow);//設置陰影圖片?? ????????localSlidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//設置劃出時主頁面顯示的剩余寬度?? <span?style="white-space:pre">??????</span>localSlidingMenu.setFadeEnabled(true);//設置滑動時菜單的是否漸變?????<span?style="white-space:pre">??????????????</span>localSlidingMenu.setFadeDegree(0.35F);//<span?style="font-family:?Helvetica,?arial,?freesans,?clean,?sans-serif;">設置</span>滑動時的漸變程度?? ????????localSlidingMenu.attachToActivity(activity,?SlidingMenu.RIGHT);//使SlidingMenu附加在Activity右邊?? //??????localSlidingMenu.setBehindWidthRes(R.dimen.left_drawer_avatar_size);//設置SlidingMenu菜單的寬度?? ????????localSlidingMenu.setMenu(R.layout.left_drawer_fragment);//設置menu的布局文件?? ????????localSlidingMenu.toggle();//動態判斷自動關閉或開啟SlidingMenu?? ????????localSlidingMenu.setOnOpenedListener(new?SlidingMenu.OnOpenedListener()?{?? ????????????????????public?void?onOpened()?{?? ?????????????????????????? ????????????????????}?? ????????????????});?? ????????return?localSlidingMenu;?? ????}?? 配置設定方法中?setMode() 是常用屬性有: 1)SlidingMenu.LEFT ? ?左測菜單 2)SlidingMenu.RIGHT ? 右側菜單 3)SlidingMenu.LEFT_RIGHT ? ?左右2測菜單? 注意:如果是1)或則 ?2) 的話,menu界面只用setMenu()就可以設定了 ? ?如果是3)的話,必須在加上setSecondaryMenu()這個方法 [java] view plaincopy <span?style="white-space:pre">??????</span>localSlidingMenu.setMenu(R.layout.left_drawer_fragment);//設置左測menu的布局文件?? ????????localSlidingMenu.setSecondaryMenu(R.layout.profile_drawer_right);<span?style="font-family:?Helvetica,?arial,?freesans,?clean,?sans-serif;">//設置右測menu的布局文件</span>?? ????????localSlidingMenu.setSecondaryShadowDrawable(R.drawable.shadowright);//設置右側陰影文件?? 配置設定方法中?setTouchModeAbove() 是常用屬性有: 1)SlidingMenu.LEFT ? ?在左測進行拖動才會相應MENU的拖動效果 2)SlidingMenu.RIGHT ?在右測進行拖動才會相應MENU的拖動效果 3)SlidingMenu.TOUCHMODE_FULLSCREEN ? ?全屏可以拖動 配置設定方法中?attachToActivity(Activity activity, int slideStyle)中slideStyle常用屬性有: 1)SlidingMenu.LEFT ? ? 2)SlidingMenu.RIGHT ?? 3)SlidingMenu.ABOVE? ?? 配置設定中以下方法的效果是一樣的,可是實現方式不一樣: [java] view plaincopy <span?style="white-space:pre">??</span>localSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);//設置陰影圖片的寬度?? ????localSlidingMenu.setShadowWidth(100);//設置陰影圖片的寬度?? 第一個是從資源文件中獲取 ,第二種是直接設定給它,注意,第二種設定的是像素,所以一般建議用第一種方式,其它有的方法結構一樣也是類似,以此類推。
這樣便配置完成了SlidingMenu,之后你可以去調用以下方法實現SlidingMenu的動作效果: 1)localSlidingMenu.showContent(); ?//隱藏Menu菜單 2)localSlidingMenu.showMenu(); ?//顯示Menu菜單 3)localSlidingMenu.showSecondaryMenu(); ?//顯示Menu第2個菜單
4)localSlidingMenu.setOnOpenListener(OnOpenListener listener); ?設置Menu菜單的打開監聽 5)localSlidingMenu.setOnCloseListener(OnCloseListener listener);? 設置Menu菜單的關閉時候的監聽(when)
6)localSlidingMenu.setOnClosedListener(OnClosedListener listener);; ?設置Menu菜單的關閉后的監聽(after ,和方法4是有區別的)
和一些判斷: 1)Boolean 類型:localSlidingMenu.isMenuShowing(); 判斷menu菜單是否是顯示的,顯示的話返回true,反之false。
?? localSlidingMenu.isSecondaryMenuShowing(); 判斷menu的第2個菜單是否是顯示的,顯示的話返回true,反之false。
上面的流程設定的menu是通過設定layout給定的布局文件,而有的人喜歡把側拉菜單使用塊Fragment去管理,那么可以繼承架包中的SlidingFragmentActivity方法去實現。 下面是我找到的一個相關帖子,我這里就不做總結了,里面有怎么去用Fragment實現menu.點我
上面講好了用代碼的方式去實現menu側拉菜單,下面說說如何在布局xml文件中實現類似的效果。
其實就是把SlidingMenu作為一個view,在布局文件中配置實現。 [html] view plaincopy<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu?? ????xmlns:sliding="http://schemas.android.com/apk/res-auto"?? ????android:id="@+id/slidingmenulayout"?? ????android:layout_width="fill_parent"?? ????android:layout_height="fill_parent"?? ????sliding:viewAbove="@layout/YOUR_ABOVE_VIEW"?? ????sliding:viewBehind="@layout/YOUR_BEHIND_BEHIND"?? ????sliding:touchModeAbove="margin|fullscreen"?? ????sliding:behindOffset="@dimen/YOUR_OFFSET"?? ????sliding:behindWidth="@dimen/YOUR_WIDTH"?? ????sliding:behindScrollScale="@dimen/YOUR_SCALE"?? ????sliding:shadowDrawable="@drawable/YOUR_SHADOW"?? ????sliding:shadowWidth="@dimen/YOUR_SHADOW_WIDTH"?? ????sliding:fadeEnabled="true|false"?? ????sliding:fadeDegree="float"?? ????sliding:selectorEnabled="true|false"?? ????sliding:selectorDrawable="@drawable/YOUR_SELECTOR"/>?? 類似于這樣,它的相關屬性配置和代碼是一樣的,只是換成了布局中設定相關屬性而已。
使用過程中發現的問題: 1)設置了這個屬性后localSlidingMenu.setTouchModeBehind(SlidingMenu.RIGHT);
會發生測拉菜單按鈕等的焦點被奪走或失效,所以這個屬性最好不好設了。 2)關于SlidingMenu的引發的原生動畫不流暢的問題
由于最近項目用到,所以把相關使用和配置記錄下來。
Github上的下載地址為:下載地址
國外用到該庫的應用APP:
- Foursquare
- Zappos
- Rdio
- Evernote Food
- Plume
- VLC for Android
- ESPN ScoreCenter
- MLS MatchDay
- 9GAG
- Wunderlist 2
- The Verge
- MTG Familiar
- Mantano Reader
- Falcon Pro (BETA)
- MW3 Barracks
你可以看到,它實際上是繼承了RelativeLayout之后去賦予你給定的layout布局,然后置于你項目的左側或則右側。 蠻多大神都是自己定義一個這樣的VIEW自己去實現這個效果,這個庫就是提供了一個方便的途徑。
二.在你的項目中引入SlidingMenu這個庫 eclipse中的流程:右擊你的項目 -- Properties -- Android ?-- Add ?選擇SlidingMenu庫 注意:可能這時你的項目會出錯或則運行時候出錯,原因就是SlidingMenu庫中已經帶有了android-support-v4.jar這個官方架包,如果你在自己的項目中也帶有這個架包的話,可能就會造成版本沖突,如果沖突了,你可以把自己項目中libs文件夾中的這個架包給刪除了。
三.在你的項目中使用這個SlidingMenu 我喜歡把SlidingMenu自定義成一個類,之后去初始化,這樣可以減少主要activity中的代碼份量,維護起來會方便的。 用代碼實現SlidingMenu這個控件: [java] view plaincopy
這樣便配置完成了SlidingMenu,之后你可以去調用以下方法實現SlidingMenu的動作效果: 1)localSlidingMenu.showContent(); ?//隱藏Menu菜單 2)localSlidingMenu.showMenu(); ?//顯示Menu菜單 3)localSlidingMenu.showSecondaryMenu(); ?//顯示Menu第2個菜單
4)localSlidingMenu.setOnOpenListener(OnOpenListener listener); ?設置Menu菜單的打開監聽 5)localSlidingMenu.setOnCloseListener(OnCloseListener listener);? 設置Menu菜單的關閉時候的監聽(when)
6)localSlidingMenu.setOnClosedListener(OnClosedListener listener);; ?設置Menu菜單的關閉后的監聽(after ,和方法4是有區別的)
和一些判斷: 1)Boolean 類型:localSlidingMenu.isMenuShowing(); 判斷menu菜單是否是顯示的,顯示的話返回true,反之false。
?? localSlidingMenu.isSecondaryMenuShowing(); 判斷menu的第2個菜單是否是顯示的,顯示的話返回true,反之false。
上面的流程設定的menu是通過設定layout給定的布局文件,而有的人喜歡把側拉菜單使用塊Fragment去管理,那么可以繼承架包中的SlidingFragmentActivity方法去實現。 下面是我找到的一個相關帖子,我這里就不做總結了,里面有怎么去用Fragment實現menu.點我
上面講好了用代碼的方式去實現menu側拉菜單,下面說說如何在布局xml文件中實現類似的效果。
其實就是把SlidingMenu作為一個view,在布局文件中配置實現。 [html] view plaincopy
使用過程中發現的問題: 1)設置了這個屬性后localSlidingMenu.setTouchModeBehind(SlidingMenu.RIGHT);
會發生測拉菜單按鈕等的焦點被奪走或失效,所以這個屬性最好不好設了。 2)關于SlidingMenu的引發的原生動畫不流暢的問題
總結
以上是生活随笔為你收集整理的Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ViewPager之引导界面---实现欢
- 下一篇: Activity中与ListActivi