现在的位置: 首页 > 综合 > 正文

Android最好用的侧滑栏开源项目SlidingMenu,集成方法与使用

2018年03月31日 ⁄ 综合 ⁄ 共 4259字 ⁄ 字号 评论关闭

现在很多APP都在使用侧滑栏来显示一些功能菜单,通过手势滑出菜单栏拥有非常好的用户体验,今天我们就来集成github上很火而且很好用的开源项目 SlidingMenu。地址:https://github.com/jfeinstein10/SlidingMenu


本文结束会提供我们今天的demo下载地址,免积分(demo是通过鸿洋_的博客demo更改)

1.导入SlidingMenu_library.

要想使用SlidingMenu我们需要将它作为Library导入我们的workspace,然后在我们自己的项目里引用它,具体操作这里就不在写一遍了,具体参考:http://blog.csdn.net/yangyu20121224/article/details/9255829.(有的时候这个:android-support-v4.jar
包可能会有冲突,只要把我们项目里的这个jar包删除就可以了)

2.把主界面MainActivity 继承 SlidingFragmentActivity(如果你的项目已经在MainActivity里写了不少东西了,不用担心,直接把继承的Activity改成继承SlidingFragmentActivity就可以了,然后重写oncreate方法就可以了).

public class MainActivity  extends SlidingFragmentActivity{
}

3.在initMenu方法里初始化SlidingMenu的各种属性,MainActivity里的代码如下:(添加后把错误修改完毕就可以,其中各种参数设置代码里或者其他博客都有很详细的解释).

package com.dqk.slidingmenu;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.View;
import android.view.Window;
import com.example.dqk_slidingmenu.R;
import com.lxh.slidingmenu.lib.SlidingMenu;
import com.lxh.slidingmenu.lib.app.SlidingFragmentActivity;
public class MainActivity  extends SlidingFragmentActivity{
	private SlidingMenu menu;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		
		initMenu();
	}

	private void initMenu() {
		Fragment leftMenuFragment = new MenuLeftFragment();
		setBehindContentView(R.layout.left_menu_frame);
		getSupportFragmentManager().beginTransaction()
				.replace(R.id.id_left_menu_frame, leftMenuFragment).commit();
		menu = getSlidingMenu();
		menu.setMode(SlidingMenu.LEFT_RIGHT);
		// 设置触摸屏幕的模式
		menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
		menu.setShadowWidthRes(R.dimen.shadow_width);
		menu.setShadowDrawable(R.drawable.shadow);
		// 设置滑动菜单视图的宽度
		menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
		// menu.setBehindWidth()
		// 设置渐入渐出效果的值
		menu.setFadeDegree(0.35f);
		// menu.setBehindScrollScale(1.0f);
		menu.setSecondaryShadowDrawable(R.drawable.shadow);
		// 设置右边(二级)侧滑菜单
		menu.setSecondaryMenu(R.layout.right_menu_frame);
		Fragment rightMenuFragment = new MenuRightFragment();
		getSupportFragmentManager().beginTransaction()
				.replace(R.id.id_right_menu_frame, rightMenuFragment).commit();

	}

	public void showLeftMenu(View view) {
		getSlidingMenu().showMenu();
		// getSlidingMenu().showContent();
	}

	public void showRightMenu(View view) {
		getSlidingMenu().showSecondaryMenu();
	}
}

4.添加MenuLeftFragment,MenuRightFragment类,这里我们简单的显示一些ListView在这两个界面里,值得一提的是,集成SlidingMenu后侧边栏的滑动是不会和主界面的各种滑动有冲突的,
5.贴上我们MenuLeftFragment的代码:

package com.dqk.slidingmenu;

import java.util.Arrays;
import java.util.List;
import com.example.dqk_slidingmenu.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MenuLeftFragment extends Fragment implements OnClickListener
{
	private View mView;
	private ListView mCategories;
	private List<String> mDatas = Arrays
			.asList("聊天", "发现", "通讯录", "朋友圈", "订阅号");
	private ListAdapter mAdapter;

	
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState)
	{
		if (mView == null)
		{
			initView(inflater, container);
		}
		return mView;
	}

	private void initView(LayoutInflater inflater, ViewGroup container)
	{
		mView = inflater.inflate(R.layout.left_menu, container, false);
		mCategories = (ListView) mView
				.findViewById(R.id.id_listview_categories);
		mAdapter = new ArrayAdapter<String>(getActivity(),
				android.R.layout.simple_list_item_1, mDatas);
		mCategories.setAdapter(mAdapter);
		
		mView.setOnClickListener(this);
	}

	
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		Toast.makeText(this.getActivity().getApplicationContext(), "你点击了mView",
			     Toast.LENGTH_SHORT).show();
		//((MainActivity)getActivity()).getSlidingMenu().showContent();
		((MainActivity)getActivity()).getSlidingMenu().toggle();
	}
}

6.在我们的titlebar  也就是mView 我们添加了一个点击事件,点击之后弹出toast,而且会返回主界面,仔细看这行代码:

((MainActivity)getActivity()).getSlidingMenu().toggle();

我们是在得到MainActivity对象后执行的操作,所以如果你想在我们的侧边栏里操作跳转界面,或者操作一些数据例如sharedpreferences 等等,都可以通过getActivity来操作.
7.再把我们demo里的其他一些类和xml放到你的工程里就可以运行了.SlidingMenu有很多参数可以设定,自定义的空间很大,想实现一些动画,功能都非常的便捷,其他博客的资料也有很多,我就不一一赘述了,今天的博客就到这里;

代码下载

(在我们的项目里dqk_slidingmenu是我们的工程包,slidingmenu_library就是library了,使用的时候导入就行.)





抱歉!评论已关闭.