文档章节

Android UI(三)SlidingMenu实现滑动菜单(详细 官方)

泥瓦匠BYSocket
 泥瓦匠BYSocket
发布于 2014/11/23 17:51
字数 641
阅读 580
收藏 25

Jeff Lee blog:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),retain the url when reproduced ! Thanks

效果图:

imageimageimage

求资源到首页上部加群即可。

一. SlidingMenu简介

github:https://github.com/jfeinstein10/SlidingMenu

官网上面的简介上翻译的:

SlidingMenu是能让开发者很容易的开发有滑动菜单App(像Google+,YouTube,Facebook)的开源android库。只要引入这个开源库的许可代码,就可以很容易免费的用在你想要滑动菜单的app。如下图所示:
                                                                                                  
image

 

二.官方小例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class SlidingExample extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle(R.string.attach);
        // set the content view
        setContentView(R.layout.content);
        // configure the 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);
        menu.setMenu(R.layout.menu);
    }
 
}

 

自然你也可以用xml定义一个slidingMenu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<com.jeremyfeinstein.slidingmenu.lib.SlidingMenu
    xmlns:sliding=" http://schemas.android.com/apk/res-auto"
    android:id="@+id/slidingmenulayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    sliding:viewAbove="@layout/YOUR_ABOVE_VIEW"
    sliding:viewBehind="@layout/YOUR_BEHIND_BEHIND"
    sliding:touchModeAbove="margin|fullscreen"
    sliding:behindOffset="@dimen/YOUR_OFFSET"
    sliding:behindWidth="@dimen/YOUR_WIDTH"
    sliding:behindScrollScale="@dimen/YOUR_SCALE"
    sliding:shadowDrawable="@drawable/YOUR_SHADOW"
    sliding:shadowWidth="@dimen/YOUR_SHADOW_WIDTH"
    sliding:fadeEnabled="true|false"
    sliding:fadeDegree="float"
    sliding:selectorEnabled="true|false"
    sliding:selectorDrawable="@drawable/YOUR_SELECTOR"/>

 

官方文档翻译如下:

  • viewAbove - 在菜单之上的布局引用
  • viewBehind - 在菜单之下的布局引用
  • touchModeAbove - 指那一部分屏幕触摸后视图显示
  • behindOffset - 菜单显示时,主体显示多少(单位像素)
  • behindWidth - 菜单显示,主体显示的宽。默认全屏
  • behindScrollScale - 菜单显示的滚动设置
  • shadowDrawable - 滚动阴影设置
  • shadowWidth - 滚动阴影的宽度
  • fadeEnabled - 滑动时菜单的是否渐变
  • fadeDegree - 滑动时的渐变程度

 

三.实现滑动菜单

主要结构:MainAct为主入口,然后各个fragment实现各自内容动作。

image

MainAct.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class MainAct extends FragmentActivity {
    private SlidingMenu menu;
     
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.slidingmenu_main);
         
        menu = new SlidingMenu(this);
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        menu.setShadowWidthRes(R.dimen.slidingmenu_shadow_width);
        menu.setShadowDrawable(R.drawable.slidingmenu_shadow);
        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        menu.setFadeDegree(0.35f);
        menu.setBehindOffset(dm.widthPixels*50/100);
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
         
         
        menu.setMode(SlidingMenu.LEFT_RIGHT);//这里模式设置为左右都有菜单,RIGHT显示右菜单,LEFT显示左菜单,LEFT_RIGH显示左右菜单
        menu.setContent(R.layout.slidingmenu_content);
        menu.setMenu(R.layout.slidingmenu_menu);
         
        menu.setSecondaryMenu(R.layout.slidingmenu_menu_2);
        menu.setSecondaryShadowDrawable(R.drawable.slidingmenu_shadow_2);
         
        getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.slidingmenu_content, new MainFragment(menu))
            .commit();//设置主页面内容
         
        getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.slidingmenu_menu, new MainLeftFragment())
            .commit();//设置左菜单内容
         
        getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.slidingmenu_menu_2, new MainRightFragment(menu))
            .commit();//设置右菜单内容
        
    }
}

 

总结:用则简单则难

© 著作权归作者所有

泥瓦匠BYSocket

泥瓦匠BYSocket

粉丝 955
博文 187
码字总数 258797
作品 4
杭州
程序员
私信 提问
滑动菜单栏SlidingMenu动画效果的实现

经过上一篇文章的学习,相信大家对开源项目SlidingMenu的用法已经有了一个非常深入的了解,那么这一章博 主就来教大家滑动菜单栏滑动时动画效果的实现。博主这里用了三个不同动画效果的基础示...

程序袁_绪龙
2015/07/18
347
0
Android开源项目SlidingMenu深切解析

原文地址:http://www.byywee.com/page/M0/S912/912002.html SlidingMenu简介: SlidingMenu的是一种斗劲新的设置界面或设备界面结果,在主界面左滑或者右滑呈现设置界面,能便利的进行各类操...

末日__
2013/12/05
426
1
SlidingMenu属性详解

SlidingMenu简介: SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果。如Evernote、Google+...

开源中国首席体验师
2014/02/18
288
0
大牛帮忙分析github slidingmenu源码

/** * Attaches the SlidingMenu to an entire Activity * * @param activity the Activity * @param slideStyle either SLIDING_CONTENT or SLIDING_WINDOW * @param actionbarOverlay whet......

忧伤的码农
2014/07/11
1K
2
【Android】SlidingMenu属性详解

简单记下属性。 SlidingMenu 常用属性介绍: menu.setMode(SlidingMenu.LEFT);//设置左滑菜单 menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的屏幕范围,该设置为全屏...

程序袁_绪龙
2015/07/18
191
0

没有更多内容

加载失败,请刷新页面

加载更多

js判断数据类型的几种方法

1、typeof typeof只能判断区分基本类型,number、string、boolean、undefined和object,function; typeof 0; //number;typeof true; //boolean;typeof undefined; //undefined;typ......

Bing309
36分钟前
3
0
说一说你的对面向过程和面向对象的理解

软件开发思想,先有面向过程,后有面向对象 在大型软件系统中,面向过程的做法不足,从而推出了面向对象 都是解决实际问题的思维方式 两者相辅相成,宏观上面向对象把握复杂事物的关系;微观...

ConstXiong
40分钟前
5
0
Qt编写气体安全管理系统5-数据监控

一、前言 本项目对设备的监控有四种视图模式,可以任意切换,数据监控、地图监控、设备监控、曲线监控,其中数据监控是最常用的,所以在主界面导航中也排在第一位,综合观察分析了很多气体安...

飞扬青云
41分钟前
3
0
pip源安装TensorFlow阿里报错 '--trusted-host mirrors.aliyun.com'.

使用命令pip install -i http://mirrors.aliyun.com/pypi/simple/ tensorFlow 报错 '--trusted-host mirrors.aliyun.com'. 需要改成 pip install -i http://mirrors.aliyun.com/pypi/simple......

Mr_Tea伯奕
47分钟前
3
0
C# ICSharpCode.SharpZipLib 压缩、解压文件 附源码

http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, GZip, BZip2 和Tar格式。我们需要dll 在官网上也有。 好了,深入的大...

_Somuns
47分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部