• 深入学习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();
    	}





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

  • 相关阅读:
    VS2010 自动跳过代码现象
    Reverse Linked List II 【纠结逆序!!!】
    Intersection of Two Linked Lists
    Linked List Cycle II
    Remove Nth Node From End of List 【另一个技巧,指针的指针】
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Remove Duplicates from Sorted List
    Linked List Cycle
    Dungeon Game
  • 原文地址:https://www.cnblogs.com/merbn/p/4638868.html
Copyright © 2020-2023  润新知