zoukankan      html  css  js  c++  java
  • 深入学习SlidingMenu 2015-06-12 20:27 856人阅读 评论(0) 收藏

    1.首先要先把自己工程的v4包删掉,然后关联library,因为slidingmenu的library里已经有v4包了, (会出现冲突)
    2.创建实例,   new Slidingmenu(getApplicationContext);
    3.设置模式  setMode(SlidingMenu.LEFT);    //此处有三种模式,LEFT,RIGHT,LEFT_RIGHT
    
    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);
    
    下面是Demo
    public class MainActivity extends Activity {
    	private Button btn1;
    	private Button btn2;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		btn1 = (Button) findViewById(R.id.button1);
    		btn2 = (Button) findViewById(R.id.button2);
    		// 创建对象
    		final SlidingMenu slide = new SlidingMenu(getApplicationContext());
    		// 设置侧滑栏的宽度
    		slide.setBehindWidthRes(R.dimen.left_width);
    		// 设置触摸模式
    		slide.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    		// 设置侧滑栏的模式
    		slide.setMode(SlidingMenu.RIGHT);
    		slide.setFadeEnabled(true);
    		slide.setFadeDegree(0.7f);
    		slide.setShadowWidth(30);
    		slide.setShadowDrawable(R.color.blue1);
    		// Animation animation = AnimationUtils.loadAnimation(MainActivity.this,
    		// R.anim.aa);
    		// slide.setAnimation(animation);
    		View v = LayoutInflater.from(getApplicationContext()).inflate(
    				R.layout.leftmenu, null);
    		// 设置侧滑栏的布局或者视图
    		slide.setMenu(v);
    		v.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View arg0) {
    				// TODO Auto-generated method stub
    				Log.e("=====", "=====");
    			}
    		});
    		// 将侧滑栏绑定到当前页面的activity
    		slide.attachToActivity(MainActivity.this, SlidingMenu.SLIDING_CONTENT);
    		btn1.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View arg0) {
    				// 判断侧滑栏是否打开进行不同的操作
    				// if (slide.isMenuShowing()) {
    				slide.toggle();
    				// }
    			}
    		});
    		btn2.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View arg0) {
    				// 判断侧滑栏是否打开进行不同的操作
    				// if (slide.isMenuShowing()) {
    				slide.toggle();
    				// }
    			}
    		});
    	}
    下面是侧滑菜单嵌套Fragment
    Fragment:注意:布局一定要是Fragmelayout
    public class LeftFragmentMenu extends Fragment implements OnClickListener,
    		OnItemClickListener {
    	private SlidingMenu menu;
    
    	public LeftFragmentMenu(SlidingMenu menu) {
    		super();
    		this.menu = menu;
    	}
    
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    
    		View v = inflater.inflate(R.layout.leftmenu, null);
    		v.findViewById(R.id.btnleft_frame) .setOnClickListener(this) ;
    
    		ListView lv = (ListView) v.findViewById(R.id.lv_left);
    		List<String> list = new ArrayList<String>();
    		for (int i = 1; i <50; i++) {
    			list.add("item" + i );
    
    		}
    		lv.setAdapter(new ArrayAdapter<String>(getActivity(),
    				android.R.layout.simple_list_item_1, list));
    		lv.setOnItemClickListener(this);
    
    		return v;
    	}
    
    	@Override
    	public void onClick(View arg0) {
    		// TODO Auto-generated method stub
    		Log.e("====", "====");
    		Toast.makeText(getActivity(), "点 ", 0).show();
    	}
    
    	@Override
    	public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    		// TODO Auto-generated method stub
    		Toast.makeText(getActivity(), "点击了item"+(arg2+1)  , 0).show();
    		menu.toggle();
    	}





    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    力扣(LeetCode)验证回文串 个人题解(C++)
    力扣(LeetCode)平方数之和 个人题解
    Exclusive Access 2 UVA
    C语言中指针*p[N], (*P)[N]的区别
    2018年蓝桥杯国赛比赛心得
    2018acm/icpc西安邀请赛比赛心得
    [最小割]Cable TV Network UVA
    Tree Reconstruction UVA
    Twenty Questions UVA
    python中的enumerate 函数(编号的实现方式)
  • 原文地址:https://www.cnblogs.com/merbn/p/4638868.html
Copyright © 2011-2022 走看看