1、初始化Slidemenu:
SlidingMenu sm = getSlidingMenu();
2、设置SlideMenu阴影:
sm.setShadowWidthRes(R.dimen.shadow_width);//阴影宽度 sm.setShadowDrawable(R.drawable.shadow);//阴影Drawable
3、设置SlideMenu来开后离边框距离:
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);//拉开后离边框距离
sm.setBehindWidth(int width);
4、设置渐变:
sm.setFadeEnabled(true);/是否有渐变 sm.setFadeDegree(0.35f);//设置渐变比率
5、设置SlideMenu布局:
setBehindContentView(R.layout.fr_slide_menu_right_frame); getSupportFragmentManager().beginTransaction().replace(R.id.fr_slide_menu_right_frame, new AddChannelFragment()).commit();
.FragmentTransaction类主要用于管理Fragment,有添加,替换,删除等操作。尤其是beginTransaction()与commit()方法与SQL中的事务有点类似。
6、设置模式:
sm.setMode(SlidingMenu.RIGHT);//菜单右边显示
SlidingMenu.LEFT 菜单左边显示;SlidingMenu.LEFT_RIGHT菜单两侧显示。
注意:菜单两侧显示的时候,既然显示两个就应该设置两个布局,需要设置第二个布局:
// 设置左右侧都有 sm.setMode(SlidingMenu.LEFT_RIGHT); // 此时要再次添加布局菜单,上一个为左侧,这个为右侧 sm.setSecondaryMenu(R.layout.menu_frame_two); getSupportFragmentManager() .beginTransaction() .replace(R.id.menu_frame_two, new SampleListFragment()).commit(); sm.setSecondaryShadowDrawable(R.drawable.shadowright);
7、设置划动模式:
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//全屏滑动
SlidingMenu.setTouchModeAbove().其中一共包含三中手势模式:
TOUCHMODE_FULLSCREEN 全屏模式,在正文布局中通过手势也可以打开SlidingMenu
TOUCHMODE_MARGIN 边缘模式,在正文布局的边缘处通过手势可以找开SlidingMenu
TOUCHMODE_NONE 自然是不能通过手势打开SlidingMenu了
8、设置SldingMenu自动判断当前是打开还是关闭:
toggle();
9、设置缩放比例:
// 放缩比例 getSlidingMenu().setBehindScrollScale((float)0.5);
二 所有属性介绍
SlidingMenu 常用属性介绍:
menu.setMode(SlidingMenu.LEFT);//设置左滑菜单
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打开
关于关闭menu有两个监听,简单的来说,对于menu close事件,一个是when,一个是after
menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭时事件
menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭后事件
左右都可以划出SlidingMenu菜单只需要设置
menu.setMode(SlidingMenu.LEFT_RIGHT);属性,然后设置右侧菜单的布局文件
menu.setSecondaryShadowDrawable(R.drawable.shadowright);//右侧菜单的阴影图片 设置SlidingMenu属性
sm = getSlidingMenu();
//如果只显示左侧菜单就是用LEFT,右侧就RIGHT,左右都支持就LEFT_RIGHT
sm.setMode(SlidingMenu.LEFT_RIGHT);//设置菜单滑动模式,菜单是出现在左侧还是右侧,还是左右两侧都有
sm.setShadowDrawable(R.drawable.shadow);//设置阴影的图片资源
sm.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
//sm.setBehindWidth(200);//设置菜单的宽
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的区域
支持右侧划出菜单:
//SlidingMenu可以同时支持划出左右两侧的菜单,互不冲突,而且动画优美,体验良好。
sm.setSecondaryMenu(R.layout.menu_frame2);//设置右侧菜单
sm.setSecondaryShadowDrawable(R.drawable.shadowright);//设置右侧菜单阴影的图片资源
//右侧SlidingMenu的Fragment
getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame2, new SampleListFragment()).commit();
slidingMenu = getSlidingMenu();
//设置是左滑还是右滑,还是左右都可以滑
slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
//设置阴影宽度
slidingMenu.setShadowWidth(getWindowManager().getDefaultDisplay().getWidth() / 40);
//设置左菜单阴影图片
slidingMenu.setShadowDrawable(R.drawable.shadow);
//设置右菜单阴影图片
slidingMenu.setSecondaryShadowDrawable(R.drawable.right_shadow);
//设置菜单占屏幕的比例
slidingMenu.setBehindOffset(getWindowManager().getDefaultDisplay().getWidth() / 5);
//设置滑动时菜单的是否淡入淡出
slidingMenu.setFadeEnabled(true);
//设置淡入淡出的比例
slidingMenu.setFadeDegree(0.4f);
//设置滑动时拖拽效果
slidingMenu.setBehindScrollScale(0);
//设置要使菜单滑动,触碰屏幕的范围
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
</pre><pre name="code" class="java">
<pre name="code" class="java">import android. os.Bundle ; import android. view.LayoutInflater ; import android. view.View ; import com. jeremyfeinstein.slidingmenu .lib. SlidingMenu; import com. jeremyfeinstein.slidingmenu .lib. app.SlidingFragmentActivity ; /*********三种实现方式*****/ public class MainActivity extends SlidingFragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { // //设置菜单的布局 setBehindContentView(R. layout.menu_layout ); setContentView(R. layout.activity_main ); // 第一步,初始化控件 SlidingMenu sMmenu = getSlidingMenu(); // 第二步,初始化参数 /** * * Mode三种方式 SlidingMenu.LEFT_RIGHT) 左右都能划出菜单 第二种 SlidingMenu.LEFT * 只能呼出左边菜单 第三种 SlidingMenu.RIGHT 只能划出右边菜单 * */ sMmenu.setMode( SlidingMenu.LEFT ); /** * 触摸模式 TOUCHMODE_FULLSCREEN 全屏划出菜单 第二种 TOUCHMODE_MARGIN 边缘划出 第三种 * TOUCHMODE_NONE 不能通过手势划出菜单 */ sMmenu.setTouchModeAbove( SlidingMenu.TOUCHMODE_MARGIN ); // 设置宽度 sMmenu.setBehindWidth( 200); // show出来 sMmenu.showMenu() ; } } 第二种 package com. lb.mysidingmenu ; import java. util.ArrayList ; import com. jeremyfeinstein.slidingmenu .lib. SlidingMenu; import android. R.menu ; import android. os.Bundle ; import android.support.v7. app.ActionBarActivity ; import android. util.DisplayMetrics ; import android. view.View ; import android. view.WindowManager ; import android. widget.Adapter ; import android. widget.ArrayAdapter ; import android. widget.ListView ; public class SlidingMenuActivity extends ActionBarActivity { private SlidingMenu slidingMenu; @Override protected void onCreate(Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); setContentView( R.layout .activity_main) ; slidingMenu = new SlidingMenu( this); slidingMenu.setMode( SlidingMenu.LEFT ); /** * 触摸模式 */ slidingMenu.setTouchModeAbove( SlidingMenu.TOUCHMODE_FULLSCREEN ); WindowManager wm = getWindowManager() ; DisplayMetrics displayMetrics = new DisplayMetrics() ; wm.getDefaultDisplay() .getMetrics(displayMetrics ); slidingMenu.setBehindWidth( displayMetrics.widthPixels / 2); slidingMenu.setShadowDrawable( R.drawable .shadow) ; slidingMenu.setBehindScrollScale(( float) 0.5); /** * �?��跟fragment搭配使用 */ // slidingMenu.setMenu(R.layout.menu_layout); /** * */ slidingMenu.setMenu(getLeftMenu()) ; /** * SlidingMenu.SLIDING_WINDOW 包括 acionbar侧滑 SlidingMenu.SLIDING_CONTENT * actionbar不动 */ slidingMenu.attachToActivity (this , SlidingMenu.SLIDING_WINDOW ); /** * 显示侧滑菜单界面 */ slidingMenu.showContent() ; slidingMenu.toggle() ; } /** * 初始化侧滑菜单的内容 * @Title: getLeftMenu * @�? �? * @�? �? @return * @return View 返回类型 * @throws */ private View getLeftMenu() { View view = getLayoutInflater() .inflate( R.layout .menu_left_layout, null) ; ListView listView = (ListView) view.findViewById( R.id .menu_left_listview) ; ArrayList<String> list = new ArrayList<String>() ; for ( int i = 0; i < 20; i ++) { list.add( "" + i) ; } ArrayAdapter<String> adapter = new ArrayAdapter <String>(this, android. R.layout.simple_list_item_1, android.R.id.text1, list); listView.setAdapter( adapter); return view ; } } 第三种 package com.lb.mysidingmenu; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBarActivity; import android.util.DisplayMetrics; import android.view.WindowManager; public class SMFragmentActivity extends ActionBarActivity { private ViewPager pager; private SlidingMenu slidingMenu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_content); pager = (ViewPager) this.findViewById(R.id.conten_viewpager); initSlidingMenu(); } private void initSlidingMenu() { slidingMenu = new SlidingMenu(this); slidingMenu.setMode(SlidingMenu.LEFT); slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); WindowManager wm = getWindowManager(); DisplayMetrics displayMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(displayMetrics); slidingMenu.setBehindWidth(displayMetrics.widthPixels / 2); slidingMenu.setMenu(R.layout.menu_fragment_layout); FragmentManager manager = getSupportFragmentManager(); manager.beginTransaction().replace(R.id.container, new TestFragment()).commit(); slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); } }
Demo地址(包含slidingMenu库文件):http://download.csdn.net/detail/q908555281/9144465
</pre><pre name="code" class="java">
转载自原文链接, 如需删除请联系管理员。
原文链接:Slidemenu(侧滑)的使用(三种使用方式)及属性详解,转载请注明来源!