程序猿媛七:slidingmenu側滑欄導航

SlidingMenu側滑欄導航

聲明:博文爲原創,文章內容爲,效果展現,思路闡述,及代碼片斷。

轉載請保留原文出處「http://my.oschina.net/gluoyer/blog/214399」,謝謝!php

您能夠到博客的「友情連接」中,「程序猿媛(最新下載)*.*」下載最新版本,持續更新!當前版本,也可直接點擊「當前1.6版本」下載。java

    你們常會碰到造輪子的問題。已經存在的輪子,咱們沒必要再本身去造一個。只需考慮如何讓輪子更方便使用,更高效轉動。git

    本文介紹了經過SlidingMenu,側滑欄做爲導航,Fragment展現頁面的功能實現:github

  •         修改集成slidingmenu爲lib庫,方便集成調用;
  •         側滑欄導航功能。

 

修改、集成slidingmenu爲lib庫

    slidingmenu,想來你們都比較熟悉了。源碼地址:https://github.com/jfeinstein10/SlidingMenuide

    一樣,在項目中使用時,碰到的各類包引用等異常,仍是比較惱人的。所以,將源碼部分剝離,修改。整理成lib包,以便更方便得引用、複用。佈局

    固然,只是最基礎版本的整理,夠用便可,在應用的 libs/gl_third_lib.jar。.net

    本文旨在應用,不贅述。您也可整理本身的lib庫,提升複用效率而已。code

側滑欄導航功能

    在前面也有篇介紹導航欄實現方式的博文:程序猿媛二:Android底部導航欄(選項卡),有須要的能夠看一下。orm

    本文則是介紹的另一種導航方式,先看一下運行效果:xml

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」,謝謝

相關文章
相關標籤/搜索