博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
slidingmenu使用说明
阅读量:7172 次
发布时间:2019-06-29

本文共 2839 字,大约阅读时间需要 9 分钟。

hot3.png

前面总结中多次提到过SlidingMenu,自己也对这个开源控件的使用简单的学习了一下,至于控件的编写,作为小菜的我由于水平有限,暂时没考虑去研究,先用着呗,当然要感谢这些大牛们在开源社区的贡献。废话不多说,直接看吧(该项目的Lib库依赖的Lib库)

       今天主要看在PropertiesActivity这个类,因为其中几乎包含了对SlidingMenu所有属性进行设置的方式方法:

     首先,Activity要继承自SlidingFragmentActivity,而SlidingFragmentActivity又继承自SherlockFragmentActivity并实现SlidingActivityBase接口提供相应方法,这个我们先不仔细研究,只要我们的Activity继承自SlidingFragmentActivity就行了。

左侧、右侧和两边

   在BaseActivity中将SlidingMenu默认设置左面菜单,全屏可拉动及其他一些属性,下面看代码:

// 设置menu布局,根据模式决定是从左侧还是右侧拉出		setBehindContentView(R.layout.menu_frame);		FragmentTransaction t = this.getSupportFragmentManager()				.beginTransaction();		mFrag = new SampleListFragment();		t.replace(R.id.menu_frame, mFrag);		t.commit();		//SlidingMenu控件的初始化		SlidingMenu sm = getSlidingMenu();		sm.setShadowWidthRes(R.dimen.shadow_width);//阴影宽度		sm.setShadowDrawable(R.drawable.shadow);//阴影Drawable		sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);//拉开后离边框距离		sm.setFadeDegree(0.35f); //颜色渐变比例		sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); //拉动事件区域  --全屏		getSupportActionBar().setDisplayHomeAsUpEnabled(true); //ActionBar返回启用
通过设置SlidingMenu的模式:
// 设置左侧menu		sm.setMode(SlidingMenu.LEFT);
// 设置右侧menu		sm.setMode(SlidingMenu.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);

可拉动触控范围

这个更简单,不多说:
switch (checkedId) {		    case R.id.touch_above_full:			// 设置触摸拖动模式--全屏			getSlidingMenu().setTouchModeAbove(					SlidingMenu.TOUCHMODE_FULLSCREEN);			break;		    case R.id.touch_above_margin:			// 设置触摸拖动模式--边缘			getSlidingMenu().setTouchModeAbove(					SlidingMenu.TOUCHMODE_MARGIN);			break;		    case R.id.touch_above_none:			// 设置触摸拖动模式--关闭			getSlidingMenu().setTouchModeAbove(					SlidingMenu.TOUCHMODE_NONE);			break;		}

放缩比例

// 放缩比例				getSlidingMenu().setBehindScrollScale(						(float) seekBar.getProgress() / seekBar.getMax());

拉出菜单宽度

// 菜单宽度(源码中作者把该操作隐藏)				getSlidingMenu().setBehindWidth(						(int) (percent * getSlidingMenu().getWidth()));				getSlidingMenu().requestLayout();

阴影

有无阴影
if (isChecked)// 是否有阴影	getSlidingMenu()		.setShadowDrawable(			getSlidingMenu().getMode() == SlidingMenu.LEFT ? R.drawable.shadow: R.drawable.shadowright);else	getSlidingMenu().setShadowDrawable(null);
阴影宽度
// 设置阴影宽度getSlidingMenu().setShadowWidth(width);getSlidingMenu().invalidate();

颜色渐变

有无渐变
getSlidingMenu().setFadeEnabled(isChecked);
渐变比率
// 颜色渐变比例getSlidingMenu().setFadeDegree(		(float) seekBar.getProgress() / seekBar.getMax());

设置某个控件不执行触摸滑动事件

mSlidingMenu.addIgnoredView(mViewPager);

判断侧边菜单栏是否是弹出状态的方法

mSlidingMenu.isMenuShowing()

转载于:https://my.oschina.net/u/1024921/blog/188106

你可能感兴趣的文章
ES6 对象转Map
查看>>
深入解析SQL Server高可用镜像实现原理
查看>>
Unity之MVC 模式
查看>>
解决 winform打开网页 和WebBrowser打开链接360误报拦截的问题
查看>>
Java基础加强总结(三)——代理(Proxy)
查看>>
操作系统多进程编程、多线程编程
查看>>
fread和fseek的用法
查看>>
PHP获取网站中各文章的第一张图片的代码示例
查看>>
Python的pandas
查看>>
ON DUPLICATE KEY UPDATE
查看>>
CRF 及CRF++ 安装与解释
查看>>
SQL Server 合并复制的Article可以指定单个对象的更新方向
查看>>
hreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
查看>>
npm常用命令
查看>>
String,StringBuffer和StringBuilder三者的讲解
查看>>
Understanding Digital Raw Capture
查看>>
(轉貼) 康乃爾筆記法(Cornell Method) (雜項)
查看>>
(原創) unnamed object的多型只能使用reference (C/C++)
查看>>
10种有用的CSS技巧
查看>>
linux命令tree用法详解
查看>>