Android开源SlidingMenu的使用
来源:互联网 发布:荷兰语翻译软件 编辑:程序博客网 时间:2024/05/22 04:49
一、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()打开或者是关闭
SlidingMenu.TOUCHMODE_FULLSCREEN 全屏幕模式,全屏滑动都可打开
SlidingMenu.TOUCHMODE_MARGIN 侧边模式,只在屏幕侧边滑动才能打开,中心滑动不能打开
SlidingMenu.TOUCHMODE_NONE 禁止触摸模式,不能够通过触摸打开,只能够通过SlidingMenu().toggle()打开或者是关闭
5、设置侧滑栏显示动画
通过SlidingMenu.setbehindCanvasTransformer(CanvasTransformer);方法可以设置侧滑栏的显示动画,参数是一个CanvasTransformer对象。下面是几个常见的动画的设置:
折叠动画:
new CanvasTransformer() {@Overridepublic void transformCanvas(Canvas canvas, float percentOpen) {canvas.scale(percentOpen, 1, 0, 0);}}
缩放动画:
new CanvasTransformer() {@Overridepublic 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() {@Overridepublic float getInterpolation(float t) {t -= 1.0f;return t * t * t + 1.0f;}};new CanvasTransformer() {@Overridepublic void transformCanvas(Canvas canvas, float percentOpen) {canvas.translate(0, canvas.getHeight()*(1-interp.getInterpolation(percentOpen)));}}
四、可能出现的问题
我在使用的时候碰到的问题如下:
1、The method replace(int ,Fragment) in the type FragmentTransaction is not applicable for the arguments (int , MyFragment)
在Fragment newFragment = new MyFragment();
fragmentTransaction.replace(R.layout.activity_main,newFragment).commit();时总是提示错误:The method replace(int ,Fragment) in the type FragmentTransaction is not applicable for the arguments (int , MyFragment) 。
解决办法:FragmentManager和FragmentTransaction在import的时候是否为import android.support.v4.app.*,如果为import android.app.*就会报上述错误。
1 1
- Android开源SlidingMenu的使用
- Android开源SlidingMenu的使用
- Android开源SlidingMenu的使用
- Android开源SlidingMenu的使用
- android slidingmenu的使用
- Android SlidingMenu的使用
- Android之SlidingMenu的使用
- Android下Slidingmenu和actionbarsherlock的使用
- Android开源项目SlidingMenu的使用
- Android中SlidingMenu框架的使用
- Android Studip下SlidingMenu的使用总结
- slidingMenu Android测量框架的使用
- Android studio 中SlidingMenu的使用
- Android中SlidingMenu开源库的使用
- android SlidingMenu侧滑的简单使用
- Android SlidingMenu 使用详解
- Android SlidingMenu 使用详解
- Android SlidingMenu 使用详解
- android中用Gson解析json全解析
- hibernate中对于数据库的Text注解出现 No Dialect mapping for JDBC type: -1解决方法
- springMVC文件上传下载-实例1
- Objective-C:一些要注意的细节
- 如何定位Android NDK开发中遇到的错误
- Android开源SlidingMenu的使用
- 非常好的遗传算法例子
- Synchronized的用法
- 修改MySQL数据存放目录
- 数据库记录
- Linux软链接和硬链接
- NGINX 图片服务器
- 如何对双卡手机的通话记录的数据添加
- OpenGL红宝书学习笔记(1)