文档章节

程序猿媛七:slidingmenu侧滑栏导航

花佟林雨月
 花佟林雨月
发布于 2014/03/30 18:58
字数 978
阅读 2494
收藏 10

SlidingMenu侧滑栏导航

声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段。

转载请保留原文出处“http://my.oschina.net/gluoyer/blog/214399”,谢谢!

您可以到博客的“友情链接”中,“程序猿媛(最新下载)*.*”下载最新版本,持续更新!当前版本,也可直接点击“当前1.6版本”下载。

    大家常会碰到造轮子的问题。已经存在的轮子,我们不必再自己去造一个。只需考虑如何让轮子更方便使用,更高效转动。

    本文介绍了通过SlidingMenu,侧滑栏作为导航,Fragment展示页面的功能实现:

  •         修改集成slidingmenu为lib库,方便集成调用;
  •         侧滑栏导航功能。

 

修改、集成slidingmenu为lib库

    slidingmenu,想来大家都比较熟悉了。源码地址:https://github.com/jfeinstein10/SlidingMenu

    同样,在项目中使用时,碰到的各种包引用等异常,还是比较恼人的。因此,将源码部分剥离,修改。整理成lib包,以便更方便得引用、复用。

    当然,只是最基础版本的整理,够用即可,在应用的 libs/gl_third_lib.jar。

    本文旨在应用,不赘述。您也可整理自己的lib库,提高复用效率而已。

侧滑栏导航功能

    在前面也有篇介绍导航栏实现方式的博文:程序猿媛二:Android底部导航栏(选项卡),有需要的可以看一下。

    本文则是介绍的另外一种导航方式,先看一下运行效果:

360手机助手截图0323_17_45_01 360手机助手截图0323_17_44_01 360手机助手截图0323_17_45_02

实现思路如下:

继承SlidingFragmentActivity

    在MainActivity中,集成集成库中的SlidingFragmentActivity,并为其设置contentView

 

private void setContentViews() {
	// customize the SlidingMenu
	SlidingMenu sm = getSlidingMenu();
	sm.setShadowWidthRes(R.dimen.shadow_width);
	sm.setShadowDrawable(R.drawable.slide_menu_shadow);
	sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
	sm.setFadeDegree(0.35f);
	sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
	sm.setMode(SlidingMenu.LEFT_RIGHT);
	
	// 设置左侧滑栏,并通过LeftMenuFragment设定初始显示页面
	// set the Above View
	setContentView(R.layout.slide_menu_content_frame);
	LeftMenuFragment lmf = new LeftMenuFragment();
	getSupportFragmentManager()
		.beginTransaction()
		.replace(R.id.content_frame, lmf.getDefaultFragment(), lmf.getDefaultTag())
		.addToBackStack(lmf.getDefaultTag())
		.commit();

	// set the Behind View
	setBehindContentView(R.layout.slide_menu_frame);
	getSupportFragmentManager()
		.beginTransaction()
		.replace(R.id.menu_frame, lmf)
		.commit();

	// 设置右侧滑栏,如不需要,直接屏蔽即可
	// set the second Behind View
	sm.setSecondaryMenu(R.layout.slide_menu_frame_two);
	sm.setSecondaryShadowDrawable(R.drawable.slide_menu_shadowright);
	getSupportFragmentManager()
		.beginTransaction()
		.replace(R.id.menu_frame_two, new RightMenuFragment())
		.commit();
}

    OK,初步的slidingmenu的调用代码就这些了。对应的布局xml,dimens设置,根据实际需求,自定调整即可。

侧滑导航实现

    从前面的图示中可看出,左侧添加了三个功能模块:“简介”,“工作笔记整理”,“第三方lib整理”。点击不同项,中间部分显示不同内容,即实现功能导航。原理上,与底部导航一致:通过Fragment的替换,显示不同功能页面。

    LeftMenuFragment即上面代码中,设置的左侧滑栏的载体。其中,记录管理着各功能模块,实现页面的替换。同时,定义了onLeftMenuItemClickListener,由MainActivity实现,以处理点击事件。当然,需要注意,处理点击时,是否为当前显示页面,直接滑动到中部显示,或者替换显示页面。比如,点击简介时:

@Override
public void onLeftMenuIntroClick(String tag) {
	if(null == tag) { // 当前即显示简介页面,滑动即可
		getSlidingMenu().showContent();
	} else {
		// 页面改变,通过tag获取新页面的Fragment
		Fragment frg = getSupportFragmentManager().findFragmentByTag(tag);
		if(null == frg) { // tag为null,页面Fragment第一次创建
			frg = new IntroFragment();
		}
		// 切换页面
		switchContent(frg, tag);
	}
}

    右侧导航栏,本次实现,点击直接显示,故直接在RightMenuFragment中处理。不详述。

    若有更多需求,比如说,两侧导航栏,点击均显示新页面到中部内容。此次未实现,初步想来,可以添加MenuFragment父类,将现在LeftMenuFragment中的 mSelectViewMap,及tag相关,点击接口等,提到该父类中,同时管理两侧内容,即可。

 

全文完,希望对您有帮助,谢谢!

应用下载:“http://mail.sina.com.cn/netdisk/download.php?id=1aa1180fd6c1b6594ed9e56b9a19620428

转载请保留原文出处“http://my.oschina.net/gluoyer/blog”,谢谢

© 著作权归作者所有

共有 人打赏支持
花佟林雨月
粉丝 77
博文 11
码字总数 10652
作品 0
成都
私信 提问
Android开源项目SlidingMenu深切解析

原文地址:http://www.byywee.com/page/M0/S912/912002.html SlidingMenu简介: SlidingMenu的是一种斗劲新的设置界面或设备界面结果,在主界面左滑或者右滑呈现设置界面,能便利的进行各类操...

末日__
2013/12/05
0
1
Github上的SlidingMenu菜单的使用方法

GitHub上的SlidingMenu的配置方法 1. 首先明确SlidingMenu是什么? SlindingMenu 是github上的大神写得一个侧滑菜单框架! 2. 如何使用SlidingMenu框架呢? 首先你需要在下载两个开源库两个z...

徐荣
2013/09/28
0
9
关于SlidingMenu的引发的原生动画不流畅的问题

原本有个项目是采用ActivityGroup的方式来实现tab的框架;但是由于需求方需要让整个ActivityGroup侧滑,模仿网页新闻的效果;于是本组成员便从github上面下载了一个SlidingMenu的包来使用,起...

ice_Anson
2013/07/22
0
0
滑动菜单栏SlidingMenu动画效果的实现

经过上一篇文章的学习,相信大家对开源项目SlidingMenu的用法已经有了一个非常深入的了解,那么这一章博 主就来教大家滑动菜单栏滑动时动画效果的实现。博主这里用了三个不同动画效果的基础示...

程序袁_绪龙
2015/07/18
0
0
SlidingMenu属性详解

SlidingMenu简介: SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果。如Evernote、Google+...

开源中国首席体验师
2014/02/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

html5代码书写规范

DOCTYPE 页面文档类型统一使用HTML5 DOCTYPE. <!DOCTYPE html> Meta字符集设置 声明方法遵循HTML5的规范, Meta文件使用 "UTF-8" 浏览器显示编码指定. <meta charset="utf-8"> 手机端页面添......

niuhongxia
25分钟前
3
0
怎么修改 phpstorm 中注释的开始位置

PHPStorm 版本:v2018.3 如下图设置:

whoru
34分钟前
2
0
Android Arcface人脸识别sdk使用工具类

public class FaceUtil{ private static final String TAG = FaceUtil.class.getSimpleName(); private static FaceUtil faceInstance = null; public FaceDB mFaceDB; pri......

是哇兴哥棒棒哒
42分钟前
2
0
JFreeChart中文API和树形详解

-------------------------------- JfreeChart 中文API -------------------------------- 要想绘制出漂亮的图表,就必须了解图表的构成部分,将图表进行分解成N个部分。 然后再对每一个部分...

喜欢搬砖的农民工
43分钟前
2
0
Android ViewPager

1.PagerAdapter { public int getCount() { return list.size(); } public Object instantiateItem(ViewGroup container, int postion) { container.addView(iv); return iv; } public void ......

Coding缘
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部