Android开源SlidingMenu的使用

一、SlidingMenu简介

SlidingMenu是最常用的几个开源项目之一.

GitHub上的开源项目Slidingmenu提供了最佳的实现:定制灵活、各种阴影和渐变以及动画的滑动效果都不错。不过这是一个开源库,要把它作为library引入到你自己的工程里,简单配置一下就可以实现SlidingMenu的效果。

二、项目的导入

三、具体实现

你可以直接继承app这个包中的SlidingActivity,SlidingFragmentActivity,SlidingListActivity等这几个类去实现这个效果,或直接在项目中初始化SlidingMenu,并进行配置后使用。

1、项目中初始化SlidingMenu

        SlidingMenu menu = new SlidingMenu(this);
        menu.setMode(SlidingMenu.LEFT);
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setShadowWidthRes(R.dimen.shadow_width);
        menu.setShadowDrawable(R.drawable.shadow);
        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        menu.setFadeDegree(0.35f);
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
<span style="white-space:pre">	</span>menu.setMenu(R.layout.menu);

其中可以在setMenu()前这样实现:

View view = LayoutInflater.from(this).inflate(R.layout.menu, null);

menu.setMenu(view);

这样就可以直接操作menu布局中的控件了。

2、SlidingFragmentActivity的实现

主类继承SlidingFragmentActivity。

因为SlidingFragmentActivity里面已集成了SlidingMenu,所以可以通过getSlidingMenu()可以获取到一个SlidingMenu对象,然后像下面的代码一样设置常用的属性就可以l

<span style="white-space:pre">		</span>// 设置存放侧滑栏的容器的布局文件
		setBehindContentView(R.layout.menu);
		// 将侧滑栏的fragment类填充到侧滑栏的容器的布局文件中
		FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
		Fragment fragment = new MenuFragment();
		transaction.replace(R.id.menu_fragment, fragment);
		transaction.commit();

		SlidingMenu sm = getSlidingMenu();
		sm.setShadowWidth(0);
		sm.setShadowDrawable(R.drawable.shadow);
		// 设置侧滑栏完全展开之后,距离另外一边的距离,单位px,设置的越大,侧滑栏的宽度越小
		sm.setBehindOffset(100);
		// 设置渐变的程度,范围是0-1.0f,设置的越大,则在侧滑栏刚划出的时候,颜色就越暗。1.0f的时候,颜色为全黑
		sm.setFadeDegree(0.3f);
		// 设置触摸模式,可以选择全屏划出,或者是边缘划出,或者是不可划出
		sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
		//设置actionBar能否跟随侧滑栏移动,如果没有,则可以去掉
		setSlidingActionBarEnabled(false);

3、双侧滑栏

我们可以通过下面的代码实现双侧滑栏的效果:

<span style="white-space:pre">		</span>// 设置左边的侧滑栏
		getSlidingMenu().setMode(SlidingMenu.LEFT_RIGHT);
		getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
		setContentView(R.layout.content_frame);
		getSupportFragmentManager().beginTransaction()
				.replace(R.id.content_frame, new SampleListFragment()).commit();
		// 设置右边的侧滑栏
		getSlidingMenu().setSecondaryMenu(R.layout.menu_frame_two);
		getSlidingMenu().setSecondaryShadowDrawable(R.drawable.shadowright);
		getSupportFragmentManager().beginTransaction()
				.replace(R.id.menu_frame_two, new SampleListFragment())
				.commit();

4、设置触摸模式

通过getSlidingMenu().setTouchModeAbove()可以设置侧滑栏的触摸模式,用下面3个常量值:

SlidingMenu.TOUCHMODE_FULLSCREEN  全屏幕模式,全屏滑动都可打开

SlidingMenu.TOUCHMODE_MARGIN  侧边模式,只在屏幕侧边滑动才能打开,中心滑动不能打开

SlidingMenu.TOUCHMODE_NONE    禁止触摸模式,不能够通过触摸打开,只能够通过SlidingMenu().toggle()打开或者是关闭

5、设置侧滑栏显示动画

通过SlidingMenu.setbehindCanvasTransformer(CanvasTransformer);方法可以设置侧滑栏的显示动画,参数是一个CanvasTransformer对象。下面是几个常见的动画的设置:

折叠动画:

new CanvasTransformer() {
			@Override
			public void transformCanvas(Canvas canvas, float percentOpen) {
				canvas.scale(percentOpen, 1, 0, 0);
			}
		}

缩放动画:

new CanvasTransformer() {
			@Override
			public void transformCanvas(Canvas canvas, float percentOpen) {
				float scale = (float) (percentOpen*0.25 + 0.75);
				canvas.scale(scale, scale, canvas.getWidth()/2, canvas.getHeight()/2);
			}
		

上升动画:

private static Interpolator interp = new Interpolator() {
		@Override
		public float getInterpolation(float t) {
			t -= 1.0f;
			return t * t * t + 1.0f;
		}
	};

new CanvasTransformer() {
			@Override
			public void transformCanvas(Canvas canvas, float percentOpen) {
				canvas.translate(0, canvas.getHeight()*(1-interp.getInterpolation(percentOpen)));
			}
		}

四、可能出现的问题

时间: 2024-08-29 05:04:22

Android开源SlidingMenu的使用的相关文章

Android 开源SlidingMenu的bug修改

SlidingMenu相信大家都已经很熟悉了 ,源代码托管在 https://github.com/jfeinstein10/SlidingMenu.首先我要感谢下原作者的大无畏精神,因为开源而伟大,哈哈.如果我们的项目中只想用到SlidingMenu,那我们就要把SlidingMenu这个控件给抽离出来了.这个是我抽离出来的的SlidingMenu控件源代码(大家有需要的可以下载学习下).如下: SlidingMenu控件源代码 我也很自豪的将这个开源控件运用在自己公司的项目中了,可是经公司的

Android开源项目SlidingMenu本学习笔记(两)

我们已经出台SlidingMenu使用:Android开源项目SlidingMenu本学习笔记(一个),接下来再深入学习下.依据滑出项的Menu切换到相应的页面 文件夹结构: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVuZzB6aGFvdGFp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > 点击Bluetooth能够切换到对应的

Android开源项目SlidingMenu深入剖析

SlidingMenu简介: SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果.如Evernote.Google+.Foursquare等,国内的豌豆夹,人人,360手机助手等都使用SlidingMenu的界面方案. 项目下载地址:https://github.com/jfeinstein10/SlidingMenu注意: SlidingMenu依赖于另一个开源项目ActionBarSherlo

Android开源项目SlidingMenu的学习笔记(二)

在前面已经介绍了SlidingMenu的用法:Android开源项目SlidingMenu的学习笔记(一),接下来再深入学习下,根据滑出项的Menu切换到对应的页面 目录结构: 点击Bluetooth可以切换到相应的界面 关键代码 MainActivity.java package com.dzt.slidingmenudemo; import android.app.Fragment; import android.app.FragmentManager; import android.app

优秀的 Android 开源项目

摘要  转载http://www.trinea.cn/android/android-open-source-projects-view/,方便大家找到自己合适的资料 目录[-] 一.ListView 二.ActionBar 三.Menu 四.ViewPager .Gallery 五.GridView 六.ImageView 七.ProgressBar 八.其他 GitHub上优秀Android开源项目 3. Android开发神器 1.Xabber客户端 2.oschina客户端 3.手机安全

GitHub Top 100的Android开源库

本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据GitHub搜索Java语言选择「Best Match」得到的结果,然后过滤了跟Android不相关的项目,所以排名并不具备任何官方效力,仅供参考学习,方便初学者快速了解当前一些流行的Android开源库. 1. React Native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native,

GitHub 优秀的 Android 开源项目

转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包含ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar及其它如Dialog.Toast.EditText.TableView.Activity Animation等等. 一.ListView android-pulltorefresh 一个强大的拉动

Android开源项目总结

Android经典的开源项目其实非常多,把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助 项目篇: 1.Apollo音乐播放器 就一个很好的播放器,但是实现的特别好!!! 地址:https://github.com/Splitter/android_packages_apps_apolloMod 2.Oschina客户端 OSChina网站客户端,wp版,ios版都有开源哦. 地址: https://github.com/oschina/android-app 3.Xa

【转】Android开源项目 分类 便于查看

之前转载了一个开源项目的文章,发现那些都是没有系统的总结,这里又转载一篇有系统总结的文章. Android开源项目系列汇总已完成,包括: Android开源项目第一篇——个性化控件(View)篇 Android开源项目第二篇——工具库篇 Android开源项目第三篇——优秀项目篇 Android开源项目第四篇——开发及测试工具篇 Android开源项目第五篇——优秀个人和团体篇 Android开源项目第一篇——个性化控件(View)篇 主要介绍那些不错个性化的View,包括ListView.Ac