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即可,这个是 缩放动画:

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

 

}

 

});

发布了55 篇原创文章 · 获赞 46 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/Kern_/article/details/43267157