SlidingMenu侧滑的使用和方法介绍

***转载请声明出处:***

/**

SlidingMenu下载方式: 访问https://github.com/Trinea/android-open-project网站,然后搜索SlidingMenu。

先要讲SlidingMenu通过p‘ropreies中的add添加到你所创建的工程项目中。

*/

menu.setMode(SlidingMenu.LEFT);//设置左滑菜单

menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的屏幕局限,该设置为全屏区域都可以滑动

menu.setShadowDrawable(R.drawable.shadow);//设置暗影

menu.setShadowWidthRes(R.dimen.shadow_width);//设置暗影的宽度

menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的残剩宽度

menu.setBehindWidth(400);//设置SlidingMenu菜单的宽度

menu.setFadeDegree(0.35f);//SlidingMenu滑动时的渐变程度

menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//使SlidingMenu附加在Activity上

menu.setMenu(R.layout.menu_layout);//设置menu的布局文件

menu.toggle();//动态断定主动封闭或开启SlidingMenu

menu.showMenu();//显示SlidingMenu

menu.showContent();//显示内容

menu.setOnOpenListener(onOpenListener);//slidingmenu打开

关于封闭menu有两个,简单的来说,对于menu close事务,一个是when,一个是after

menu.OnClosedListener(OnClosedListener);//slidingmenu封闭时事务

menu.OnClosedListener(OnClosedListener);//slidingmenu封闭后事务

阁下都可以划出SlidingMenu菜单只须要设置

menu.setMode(SlidingMenu.LEFT_RIGHT);属性,然后设置右侧菜单的布局文件

menu.setSecondaryShadowDrawable(R.drawable.shadowright);//右侧菜单的暗影

应用Fragment实现SlidingMenu:

1.起首Activity持续自SlidingMenu包下的SlidingFragmentActivity

2. setContentView(R.layout.content_frame);//该layout为一个全屏的FrameLayout

3. setBehindContentView(R.layout.menu_frame);//设置SlidingMenu应用的布局,同样是一个全屏的FrameLayout

4.设置SlidingMenu左侧菜单的Fragment


setBehindContentView(R.layout.menu_frame);

 

        FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();

 

        leftMenuFragment = new MenuFragment();

 

        t.replace(R.id.menu_frame, leftMenuFragment);

 

        t.commit();

MenuFragment其实就是一个Fragment,显示一个ListView

然后点击ListView的每一项的时辰,通知Activity切换不合的Fragment

为了看清结果,我们新建5个Frament,分别是

Fragment1, Fragment2, Fragment3,
Fragment4, Fragment5

在SlidingMenu顶用ListView显示。

设置主页面显示的Fragment:


if (savedInstanceState == null) {//== null的时辰新建Fragment1

 

contentFragment = new Fragment1();

 

} else {//不便是null,直接get出来

 

//不便是null,找出之前保存的当前Activity显示的Fragment

 

contentFragment = getSupportFragmentManager().getFragment(savedInstanceState, "contentFragment");

 

}

 

//设置内容Fragment

 

getSupportFragmentManager()

 

.beginTransaction()

 

.replace(R.id.content_frame, contentFragment)

 

.commit();

在Activity的onSaveInstanceState中保存当前显示的Fragment

getSupportFragmentManager().putFragment(outState, "contentFragment", contentFragment);

设置SlidingMenu属性

sm = getSlidingMenu();

//若是只显示左侧菜单就是用LEFT,右侧就RIGHT,阁下都支撑就LEFT_RIGHT

sm.setMode(SlidingMenu.LEFT_RIGHT);//设置菜单滑动模式,菜单是呈如今左侧还是右侧,还是阁下两侧都有

sm.setShadowDrawable(R.drawable.shadow);//设置暗影的资料

sm.setShadowWidthRes(R.dimen.shadow_width);//设置暗影的宽度

//sm.setBehindWidth(200);//设置菜单的宽

sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的残剩宽度

sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的区域

支撑右侧划出菜单:

//SlidingMenu可以同时支撑划出阁下两侧的菜单,互不冲突,并且动画精美,体验杰出。

sm.setSecondaryMenu(R.layout.menu_frame2);//设置右侧菜单

sm.setSecondaryShadowDrawable(R.drawable.shadowright);//设置右侧菜单暗影的资料

//右侧SlidingMenu的Fragment

getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame2, new SampleListFragment()).commit();

设置ActionBar可以被点击:

getSupportActionBar().setHomeButtonEnabled(true);//actionbar主按键可以被点击

getSupportActionBar().setDisplayHomeAsUpEnabled(true);//显示向左的图标

setSlidingActionBarEnabled(false);//阁下两侧slidingmenu的fragment是否显示题目栏

切换主页面显示的Fragment:

public void switchContent(Fragment f) {

//给内容Fragment赋值,并在onSaveInstanceState时保存这个Fragment

contentFragment = f;

FragmentTransaction  t = getSupportFragmentManager().beginTransaction();

t.replace(R.id.content_frame, f);

t.commit();

sm.showContent();

应用通俗Activity实现SlidingMenu :


slidingMenu menu = new SlidingMenu(this);//直接new,而不是getSlidingMenu

 

menu.setMode(SlidingMenu.LEFT);

 

menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

 

menu.setShadowDrawable(R.drawable.shadow);

 

menu.setShadowWidthRes(R.dimen.shadow_width);

 

menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);

 

menu.setBehindWidth(400);//设置SlidingMenu菜单的宽度

 

menu.setFadeDegree(0.35f);

 

menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//必须调用

 

menu.setMenu(R.layout.menu_layout_left);//就是通俗的layout布局

 

menu.setBehindCanvasTransformer(mTransformer);

响应SlidingMenu里的点击事务,因为SlidingMenu已经被包含在了Activity中了,所以直接findViewById(id),拿到view之后就可以进行响应的处理惩罚。

支撑阁下两侧都能划出菜单

menu.setSecondaryMenu(R.layout.menu_layout_right);

menu.setSecondaryShadowDrawable(R.drawable.shadowright);

右侧菜单一样直接findViewById(id),拿到view之后就可以随便率性处理惩罚了

调换SlidingMenu的动画

SlidingMenu支撑左滑或者右滑时定义不合的动画,包含拉伸,缩放,扭转等动画。就是在滑动的过程中,SlidingMenu如何呈现的动画。

动画应用也很简单

起首定义CanvasTransformer mTransformer;变量:


mTransformer = 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);

 

}

 

};

然后将mTransformer对象设置给SlidingMenu即可,这个是 缩放动画:

private void initSlidUpCanvasTransformer() {

mTransformer = new CanvasTransformer() {

@Override

public void transformCanvas(Canvas canvas, float percentOpen) {

canvas.translate(0, canvas.getHeight()*(1-interp.getInterpolation(percentOpen)));

}

};

}

private static Interpolator interp = new Interpolator() {

@Override

public float getInterpolation(float t) {

t -= 1.0f;

return t * t * t + 1.0f;

}

}; 

拉伸动画:


mTransformer = new CanvasTransformer() {

 

@Override

 

public void transformCanvas(Canvas canvas, float percentOpen) {

 

canvas.scale(percentOpen, 1, 0, 0);

 

}

 

});
时间: 2024-10-13 15:43:30

SlidingMenu侧滑的使用和方法介绍的相关文章

Json数据的序列化与反序列化的三种常用方法介绍

以下内容是本作者从官网中看相应的教程后所做的demo,其体现了作者对相关知识点的个人理解..作者才疏学浅,难免会有理解不到位的地方..还请各位读者批判性对待... 本文主要介绍在Json数据的序列化与反序列化的过程中我经常用到的三种工具的基本使用方法,及其他们之间 的比较...希望能够对读者们有一些帮助... 这里介绍到的三种解析与生成Json数据的方法分别是:标准JSON解析与生成方法.使用gson解析与生成JSON数据 .使用fastJsson解析与生成JSON数据. 首先,这些工具都可以到

SVG DOM常用属性和方法介绍

将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析器所特有的.SVG支持DOM2标准. 12.2.1  文档初始化相关 evt属性 evt表示事件本身,可以通过evt获取与当前事件相关的信息,用户可以在script中定义响应函数,进行相应的处理.它与普通JavaScript脚本中的event基本相同,只不过在普通JavaScript的脚本中简写成“e”. ownerDocument属性 通过引

Memcached 常见命令 telnet 使用方法介绍

Memcached 常见命令: telnet 使用方法介绍: (1)建立telnet连接,命令"telnet 127.0.0.1 11211".win7下会提示"telnet不是内部或外部命令",解决方法是"控制面板"-->"程序和功能"-->"打开或关闭windows功能"-->勾选"telnet客户端". (2)添加数据--命令"add name 0 60

ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍

如果我是C罗 原文 ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍 sequence在ORACLE中应用十分广泛,就是序列号的意思,会自动增加指定变数,如逐次增加1或者2或者其他. 1.创建序列 Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE 权限 CREATE SEQUENCE CUX_DEMO_SEQUENCEMINVALUE 1MAXVALUE 99999999999START WITH 1000

jQuery用unbind方法去掉hover事件及其他方法介绍

近日项目开发十分的繁忙,其中一个需求是实现响应式导航.(响应式的问题我们在css相关的博客中再交流) 大家都知道导航是需要下来菜单效果的,必然就会用到 jQuery的 hover() 方法.若是导航放在ipad中,自然hover()就没有什么意义了.那该如何取消hover()并添加touch事件呢? 今天遇到jquery需要去掉hover的问题,原以为直接unbind(“hover”)就可以搞定,可是搞了半天都报错. 原因其实很简单,hover并不是事件.打开参考手册,hover其实由 mous

WPF使用MediaElement方法介绍

搬运自:http://wurang.me/2014/04/29/WPF-MediaElement.html 在WPF或Silverlight中使用MediaElement控件可以方便的制作一个视频音频播放器. 首先制作一个UserControl: 代码如下: <DockPanel Height="387"> <StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom"&

Linux 下查看某一个程序所使用的内存方法介绍

Linux 下查看某一个程序所使用的内存方法介绍 在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况.常用方法总结如下(注意第四种方法): 第一种:ps -aux | grep process_name 举例如下:现打算监控/usr/bin/sshd所占的内存,首先需找到pid,然后使用top进行有目标的监控,RES即为内存值,见下两图: top -p 1231,截图如下:    第二种:top -p pid 查看程序的情况 如上图所示! 第三种:cat /pro

HTML DOM对象的属性和方法介绍(原生JS方法)

HTML DOM对象的属性和方法介绍 DOM 是 Document Object Model(文档对象模型)的缩写. DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口),它允许程序和脚本动态地访问和更新文档的内容,结构和样式. W3C DOM 标准被分为 3 个不同的部分: 核心 DOM - 针对任何结构化文档的标准模型 XML DOM - 针对 XML 文档的标准模型 HTML DOM - 针对 HTML 文档的标准模型 HTML DOM 定义了所有 HTML 元

游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)

(转)游戏引擎中三大及时光照渲染方法介绍(以unity3d为例) 重要:在目前市面上常见的游戏引擎中,主要采用以下三种灯光实现方式: 顶点照明渲染路径细节 Vertex Lit Rendering Path Details 正向渲染路径细节 Forward Rendering Path Details 延迟光照渲染路径的细节 Deferred Lighting Rendering Path Details 以unity3d为例,以下将详细讲解三种灯光渲染方式的实现.原理及缺陷. 顶点照明渲染路径