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

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”,谢谢

你可能感兴趣的:(程序猿媛七:slidingmenu侧滑栏导航)