码迷,mamicode.com
首页 > 其他好文 > 详细

SlidingMenu侧滑的使用和方法介绍

时间:2015-01-29 10:27:44      阅读:247      评论:0      收藏:0      [点我收藏+]

标签: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

setBehindContentViewR.layout.menu_frame);
 
FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
 
leftMenuFragment = new MenuFragment();
 
t.replaceR.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().getFragmentsavedInstanceState "contentFragment");
 
}
 
//设置内容Fragment
 
getSupportFragmentManager()
 
.beginTransaction()
 
.replaceR.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 SlidingMenuthis);//直接new,而不是getSlidingMenu
 
menu.setModeSlidingMenu.LEFT);
 
menu.setTouchModeAboveSlidingMenu.TOUCHMODE_FULLSCREEN);
 
menu.setShadowDrawableR.drawable.shadow);
 
menu.setShadowWidthResR.dimen.shadow_width);
 
menu.setBehindOffsetResR.dimen.slidingmenu_offset);
 
menu.setBehindWidth400);//设置SlidingMenu菜单的宽度
 
menu.setFadeDegree0.35f);
 
menu.attachToActivitythis SlidingMenu.SLIDING_CONTENT);//必须调用
 
menu.setMenuR.layout.menu_layout_left);//就是通俗的layout布局
 
menu.setBehindCanvasTransformermTransformer);

响应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 transformCanvasCanvas canvas float percentOpen {
 
float scale = float percentOpen*0.25 + 0.75);
 
canvas.scalescale 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 transformCanvasCanvas canvas float percentOpen {
 
canvas.scalepercentOpen 1 0 0);
 
}
 
});

 

SlidingMenu侧滑的使用和方法介绍

标签:slidingmenu

原文地址:http://blog.csdn.net/kern_/article/details/43267157

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!