SlidingMenu的配置与基本使用方法Demo

这篇文章主要写的是slidingmenu的配置方法,以及配置成功后成功使用的一个小demo

该内容主要是在我的第一篇文章 ViewPager+Fragment 仅加载当前页面的demo 的基础之上进行了修改,加了一个slidingmenu,通过slidingmenu上的list列表,点击哪个选项,就滑动到哪个页面。下面是实现后的效果图:



一.SlidingMenu的环境配置

我们需要从github上下载两个开源代码库,一个是slidingMenu,一个是ActionBarSherlock(因为slidingMenu需要用到这个库中的内容)

下面附上下载地址:

actionBarSherlock: https://github.com/JakeWharton/ActionBarSherlock

slidingMenu: https://github.com/jfeinstein10/slidingmenu

下载之后,解压,对于actionBarSherlock,我们向eclipse里导入它的工程actionBarSherlock

而slidingMenu,我们导入library就可以了。(要学习demo之类的请另外导入别的内容)

导入工程以后,我们首先需要将actionBarSherlock的工程当做引用库导入到library中

1.actionBarSherlock的islibrary打勾:



2.library中引入该actionBarSherlock工程,并且也将isLibrary打勾



3.由于这两个库中都有v4包,所以我们将library的v4包删除,以防重复定义

4.在SlidingMenu的源码中修改一些内容,以防后面报错,SlidingActivity.java中,将该类继承的类改为:SherlockActivity


SlidingFragmentActivity.java中,将该类的继承类改为:SherlockFragmentActivity



完成上面的步骤后,接下来我们就可以新建一个android工程了,我这里直接使用上篇文章的工程PagerTest

在新建的工程中,我们需要将library库导入到该工程中,如下:



如此这般,该项目就可以使用SlidingMenu框架的功能了。

下面就是之前我说过的demo:


在上一个项目的基础上,我将MainActivity继承了SlidingFragmentActivity

并且为了实现之前说的效果,定义了一个layout作为菜单文件的layout,一个layout作为菜单文件的内容(之后Fragment的layout)

分别是:

behindview.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/behindView" />

list.xml:

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="10dp"
    android:paddingRight="10dp" />

用来显示菜单界面的MyListFragment.java,我们定义了一个listView,并且监听了他的点击事件,当某一项被点击时,ViewPager就跳到相应的界面,处理点击事件是在Activity处理的,稍后在述:

public class MyListFragment extends ListFragment {

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		List<String> data = new ArrayList<String>();
		data.add("第一个");
		data.add("第二个");
		data.add("第三个");
		data.add("第四个");
		data.add("第五个");
		setListAdapter(new ArrayAdapter<String>(getActivity(),
				android.R.layout.simple_list_item_1, data));
		return super.onCreateView(inflater, container, savedInstanceState);
	}

	@Override
	public void onListItemClick(ListView l, View v, int position, long id) {
		if (getActivity() instanceof MainActivity) {
			MainActivity activity = (MainActivity) getActivity();
			activity.processListClick((int) id);
		}
		super.onListItemClick(l, v, position, id);
	}
上面当某个list点击之后,会把id传到activity中,进行相关处理,下面我们来看MainActivity.java的内容

onCreate方法:

@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		setBehindContentView(R.layout.behindview);
		initContentView();
		setupSlidingMenu();
	}
其中,setBehindContentView()就是slidingMenu的方法,用于设置slideMenu 的View

initContentView()里是上篇文章对ViewPager的配置,这里仅贴出代码:

private void initContentView() {
		pager = (ViewPager) findViewById(R.id.pager);
		fgs = new TestFragment[5];
		for (int i = 0; i < 5; i++) {
			fgs[i] = new TestFragment();
			Bundle bundle = new Bundle();
			bundle.putInt("id", i);
			fgs[i].setArguments(bundle);
		}
		FragmentManager manager = getSupportFragmentManager();
		adapter = new FragmentPagerAdapter(manager) {

			@Override
			public int getCount() {
				return fgs.length;
			}

			@Override
			public Fragment getItem(int arg0) {
				return fgs[arg0];
			}
		};
		pager.setAdapter(adapter);
		pager.setCurrentItem(0);
	}

下面就是对SlideMenu进行设置:

private void setupSlidingMenu() {
		getSlidingMenu().setMode(SlidingMenu.LEFT);
		getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
		getSlidingMenu().setBehindOffset(100);
		getSlidingMenu().setFadeDegree(0.35f);
		getFragmentManager().beginTransaction()
				.replace(R.id.behindView, new MyListFragment()).commit();
		getActionBar().setDisplayHomeAsUpEnabled(true);

	}
我们可以直接通过getSlidingMenu来得到当前Activity的SlidingMenu,但是得设置过 ,否则会报空指针

接下来就是对该SlidingMenu的各项属性进行设置,关于其属性的设置,请看github上的属性说明,不过是英文。。。

这里仅对这里面有的属性进行说明:

setMode是设置从那边弹出,有LEFT,RIGHT,LEFTRIGHT可选

setTouchModeAbove  我理解是触摸范围,TOUCHMODE_MARGIN代表大约左半个(或又半个)屏幕的范围内滑动时可以弹出SlidngMenu,TOUCHMODE_FULLSCREEN是全屏范围滑动有效(注意冲突。。。)

setBehindOffset指的是当滑动菜单弹出时,内容界面显示的大小(单位像素)

setFadeDegree指的是渐变的系数,从0.0F,到1.0F范围内,系数越大,渐变越明显

后面就是设置menu的实体View,还有左上角的点击按钮,点击之后就可以弹出SlidingMenu


下面就是左上角点击按钮的点击事件:

@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		if (item.getItemId() == android.R.id.home)
			getSlidingMenu().toggle();
		return super.onOptionsItemSelected(item);
	}
toggle()帮助我们省去了一些判断,当前SlidingMenu处于显示状态时,就隐藏,隐藏状态时,就弹出

下面是处理Menu中每个listItem的点击事件,主要工作就是,翻到相应页,隐藏SlidingMenu:

public void processListClick(int id) {
		pager.setCurrentItem(id);
		getSlidingMenu().showContent();
	}


基本就是这样,如有不足,尽请指正,谢谢。

附上demo下载地址:http://download.csdn.net/detail/tc598100922/7341297









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值