SlidingMenu,你不能只会代码

来源:互联网 发布:淘宝跳蚤市场如何进入 编辑:程序博客网 时间:2024/04/29 23:13

SlidingMenu是一个很好使用的侧滑菜单开源项目,它的表现形式类似于DrawerLayout和SlidingDrawer,具体效果如下图所示,左侧为侧滑Menu菜单,右侧黑色部分为内容显示视图Content:


         下面是SlidingMenu主要的方法:

全局常量:

         //侧滑菜单通过手势的打开方式

         publicstatic final int TOUCHMODE_MARGIN = 0;    //触摸屏幕边缘打开侧滑菜单

         publicstatic final int TOUCHMODE_FULLSCREEN = 1;//触摸屏幕的任何位置打开侧滑菜单

         publicstatic final int TOUCHMODE_NONE = 2;          //禁止通过手势打开侧滑菜单


         //侧滑菜单的显示位置

         publicstatic final int LEFT = 0;                                      //侧滑菜单显示在内容视图左边

         publicstatic final int RIGHT = 1;                                  //侧滑菜单显示在内容视图右边

         publicstatic final int LEFT_RIGHT = 2;                       //侧滑菜单放在内容视图的左边和右边

公用方法:

[java] view plaincopy
  1. /** 
  2. *设置内容显示视图的布局资源 
  3. * @param res 布局文件资源ID 
  4. */  
  5. public void setContent(int res) {  
  6.     setContent(LayoutInflater.from(getContext()).inflate(res, null));  
  7. }  
  8.   
  9. /** 
  10. * 设置内容显示视图的布局资源 
  11. * @param view 自定义View视图 
  12. */  
  13. public void setContent(View view) {  
  14.     mViewAbove.setContent(view);  
  15.     showContent();  
  16. }  
  17.   
  18. /** 
  19. * 返回内容显示视图 
  20. * @return 当前内容显示视图 
  21. */  
  22. public View getContent() {  
  23.     return mViewAbove.getContent();  
  24. }  
  25.   
  26. /** 
  27. * 设置侧滑菜单的布局* 
  28. * @param res 布局资源id 
  29. */  
  30. public void setMenu(int res) {  
  31.     setMenu(LayoutInflater.from(getContext()).inflate(res, null));  
  32. }  
  33.   
  34. /** 
  35. * 设置侧滑菜单的界面 
  36. * @param view 自定义View视图 
  37. */  
  38. public void setMenu(View v) {  
  39.     mViewBehind.setContent(v);  
  40. }  
  41.   
  42. /** 
  43. * 获取侧滑菜单视图 
  44. * @return 侧滑菜单视图 
  45. */  
  46. public View getMenu() {  
  47.     return mViewBehind.getContent();  
  48. }  
  49.   
  50. /** 
  51. * 是否使能侧滑菜单,如果设置为false则表示不能通过手势或者其它方式呼出侧滑菜单 
  52. * @param b 是否使能侧滑菜单 
  53. */  
  54. public void setSlidingEnabled(boolean b) {  
  55.     mViewAbove.setSlidingEnabled(b);  
  56. }  
  57.   
  58. /** 
  59. * 返回侧滑菜单的使能状态 
  60. * 
  61. * @return true, 侧滑菜单可用 
  62. */  
  63. public boolean isSlidingEnabled() {  
  64.     return mViewAbove.isSlidingEnabled();  
  65. }  
  66.   
  67. /** 
  68. * 设置侧滑菜单的显示方式 
  69. * @param mode 设置侧滑菜单显示位置 LEFT/RIGHT/LEFT_RIGHT 
  70. */  
  71. public void setMode(int mode) {  
  72.     if (mode != LEFT && mode != RIGHT && mode != LEFT_RIGHT) {  
  73.         throw new IllegalStateException("SlidingMenu mode must be LEFT, RIGHT, or LEFT_RIGHT");  
  74.     }  
  75.     mViewBehind.setMode(mode);  
  76. }  
  77.   
  78. /** 
  79. * 返回当前侧滑菜单处于那种显示模式 
  80. * @return 侧滑菜单当前显示模式,LEFT/RIGHT 
  81. */  
  82. public int getMode() {  
  83.     return mViewBehind.getMode();  
  84. }  
  85.   
  86. /** 
  87. * 设置侧滑菜单是否处于静止状态 
  88. * @param b true侧滑菜单处于静止状态, false 禁止侧滑菜单处于静止状态 
  89. */  
  90. public void setStatic(boolean b) {  
  91.     if (b) {  
  92.         setSlidingEnabled(false);  
  93.         mViewAbove.setCustomViewBehind(null);  
  94.         mViewAbove.setCurrentItem(1);  
  95.     } else {  
  96.         mViewAbove.setCurrentItem(1);  
  97.         mViewAbove.setCustomViewBehind(mViewBehind);  
  98.         setSlidingEnabled(true);  
  99.     }  
  100. }  
  101.   
  102. /** 
  103. * 显示侧滑菜单 
  104. */  
  105. public void showMenu() {  
  106.     showMenu(true);  
  107. }  
  108.   
  109. /** 
  110. * 显示侧滑菜单 
  111. * 
  112. * @param animate true打开侧滑菜单时有动画效果, false 打开侧滑菜单时没有动画效果 
  113. */  
  114. public void showMenu(boolean animate) {  
  115.     mViewAbove.setCurrentItem(0, animate);  
  116. }  
  117.   
  118. /** 
  119. * 关闭侧滑菜单并显示内容视图 
  120.  */  
  121. public void showContent() {  
  122.     showContent(true);  
  123. }  
  124.   
  125. /** 
  126. *关闭侧滑菜单并显示内容视图 
  127. * 
  128. * @param animate true 打开内容显示视图时有动画效果, false打开内容视图时没有动画效果 
  129. */  
  130. public void showContent(boolean animate) {  
  131.     mViewAbove.setCurrentItem(1, animate);  
  132. }  
  133.   
  134. /** 
  135. * 切换侧滑菜单和内容显示视图的显示状态 
  136. * 切换侧滑菜单视图和内容显示视图,显示隐藏都带动画 
  137. */  
  138. public void toggle() {  
  139.     toggle(true);  
  140. }  
  141.   
  142. /** 
  143. * 切换侧滑菜单视图和内容显示视图,可设置显示隐藏是否带动画 
  144. * @param animate true 切换时有动画效果, false切换时没有动画效果 
  145. */  
  146. public void toggle(boolean animate) {  
  147.     if (isMenuShowing()) {  
  148.         showContent(animate);  
  149.     } else {  
  150.         showMenu(animate);  
  151.     }  
  152. }  
  153.   
  154. /** 
  155. * 侧滑菜单是否处于显示状态 
  156. * @return true 侧滑显示处于显示状态 false 侧滑菜单处于不可见状态 
  157. */  
  158. public boolean isMenuShowing() {  
  159.     return mViewAbove.getCurrentItem() == 0 || mViewAbove.getCurrentItem() == 2;  
  160. }  
  161.   
  162. /** 
  163. * 得到侧滑菜单右侧相对于屏幕右侧的距离 
  164. * @return 侧滑菜单右侧相对于屏幕右侧的距离 
  165. */  
  166. public int getBehindOffset() {  
  167.     return ((RelativeLayout.LayoutParams)mViewBehind.getLayoutParams()).rightMargin;  
  168. }  
  169.   
  170. /** 
  171. * 设置侧滑菜右侧相对于屏幕右侧的距离 
  172. * @param i 侧滑菜右侧相对于屏幕右侧的距离 
  173. */  
  174. public void setBehindOffset(int i) {  
  175.     mViewBehind.setWidthOffset(i);  
  176. }  
  177.   
  178. /** 
  179. * 设置侧滑菜单宽度 
  180. * @param i 侧滑菜单宽度*/  
  181. @SuppressWarnings("deprecation")  
  182. public void setBehindWidth(int i)  
  183.   
  184. /** 
  185. * 获取slidingmenu手势打开模式 
  186. * @return slidingmenu手势打开模式 
  187. */  
  188. public int getTouchModeAbove() {  
  189.     return mViewAbove.getTouchMode();  
  190. }  
  191.   
  192. /** 
  193. * 设置SlidingMenu手势打开模式 
  194. * @param i SlidingMenu手势打开模式 
  195. */  
  196. public void setTouchModeAbove(int i) {  
  197.     if (i != TOUCHMODE_FULLSCREEN && i != TOUCHMODE_MARGIN  
  198.             && i != TOUCHMODE_NONE) {  
  199.         throw new IllegalStateException("TouchMode must be set to either" +  
  200.                 "TOUCHMODE_FULLSCREEN or TOUCHMODE_MARGIN or TOUCHMODE_NONE.");  
  201.     }  
  202.     mViewAbove.setTouchMode(i);  
  203. }  
  204.   
  205. /** 
  206. * 设置阴影宽度 
  207. * @param 阴影宽度,单位为像素 
  208. */  
  209. public void setShadowWidth(int pixels) {  
  210.     mViewBehind.setShadowWidth(pixels);  
  211. }  
0 0
原创粉丝点击