SlidingMenu是一个开源项目, https://github.com/jfeinstein10/SlidingMenu 。功能是创建侧边滑动菜单栏,效果类似人人Android客户端,可点击按钮或是在屏幕上划动来展开,收缩侧边的菜单。下面是Demo效果图:

简单介绍一下:整个demo由三个Fragment,一个Activity组成,菜单一个Fragment,包含两个按钮,在内容区域切换显示FragmentA和FragmentB.
项目用了AndroidAnnotations框架。
MainActivity:

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.pocketdigi.slidingmenudemo;
 
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
 
import com.googlecode.androidannotations.annotations.AfterViews;
import com.googlecode.androidannotations.annotations.EActivity;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.pocketdigi.fragment.FragmentA_;
import com.pocketdigi.fragment.FragmentB_;
import com.pocketdigi.fragment.MenuFragment_;
 
 
@EActivity(R.layout.layout_content)
public class MainActivity extends FragmentActivity {
Fragment fragmentA, fragmentB, menuFragment;
SlidingMenu menu;
 
@AfterViews
public void afterViews() {
//添加左侧菜单
menuFragment = new MenuFragment_();
menu = new SlidingMenu(this);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setShadowDrawable(R.drawable.shadow);
menu.setShadowWidthRes(R.dimen.shadow_width);
//设置拉出菜单后,上层内容留下的宽度,即这个宽度+菜单宽度=屏幕宽度
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
//设置隐藏或显示菜单时,菜单渐变值,0,不变,1黑色,值为0-1
menu.setFadeDegree(0f);
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
menu.setMenu(R.layout.layout_menu);
 
getSupportFragmentManager().beginTransaction()
.replace(R.id.layout_menu, menuFragment).commit();
 
//显示FragmentA
showFragmentA();
}
 
/**
* 捕捉返回键,如果当前显示菜单,刚隐藏
*/
@Override
public void onBackPressed() {
if (menu.isMenuShowing()) {
menu.showContent();
} else {
super.onBackPressed();
}
}
 
public void showFragmentA()
{
if(fragmentA==null)
{
fragmentA = new FragmentA_();
}
if(!fragmentA.isVisible())
{
getSupportFragmentManager().beginTransaction()
.replace(R.id.layout_content, fragmentA).commit();
}
menu.showContent(true);
}
 
public void showFragmentB()
{
if(fragmentB==null)
{
fragmentB = new FragmentB_();
}
if(!fragmentB.isVisible())
{
getSupportFragmentManager().beginTransaction()
.replace(R.id.layout_content, fragmentB).commit();
}
menu.showContent(true);
}
 
 
}

MenuFragment.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
package com.pocketdigi.fragment;
 
import android.support.v4.app.Fragment;
import android.widget.Button;
 
import com.googlecode.androidannotations.annotations.AfterViews;
import com.googlecode.androidannotations.annotations.Click;
import com.googlecode.androidannotations.annotations.EFragment;
import com.googlecode.androidannotations.annotations.ViewById;
import com.pocketdigi.slidingmenudemo.MainActivity;
import com.pocketdigi.slidingmenudemo.R;
 
@EFragment(R.layout.fragment_menu)
public class MenuFragment extends Fragment {
@ViewById
Button btn_fragmentA,btn_fragmentB;
MainActivity mainActivity;
 
@AfterViews
public void afterViews()
{
mainActivity=(MainActivity)getActivity();
}
 
@Click
public void btn_fragmentA()
{
mainActivity.showFragmentA();
}
@Click
public void btn_fragmentB()
{
mainActivity.showFragmentB();
}
}

Android开发 侧边滑动菜单栏SlidingMenu结合Fragment的更多相关文章

  1. Android开发——View滑动冲突解决方案

    0. 前言   我们在Android开发--事件分发机制详解中深入学习了事件分发机制,为我们解决Android开发中的滑动冲突问题做了初步准备.针对滑动冲突这里给出两种解决方案:外部拦截法和内部拦截法 ...

  2. Android开发——View滑动的三种实现方式

    0. 前言   Android开发中,我们常常需要View滑动实现一些绚丽的效果来优化用户体验.一般View的滑动可以用三种方式实现. 转载请注明出处:http://blog.csdn.net/seu ...

  3. Android开发笔记(10)——使用Fragment传递

    转载请注明:http://www.cnblogs.com/igoslly/p/6911165.html 由于最近废寝忘食地在开发App,没来得及及时做总结,没有用很高级的部件,勉强也使用一些功能完成了 ...

  4. 【转载】Android开发中巧用Activity和Fragment

    1.Activity的生命周期 1)多个Activity组成Activity栈,当前活动位于栈顶.我们先来看看各种Activity基类的类图: 当Activity类定义出来之后,这个Activity何 ...

  5. Android开发——弹性滑动的两种实现方式

    0. 前言   欢迎转载,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52538723 我们在Android开发--View滑动的三 ...

  6. 【Android UI设计与开发】9:滑动菜单栏(一)开源项目SlidingMenu的使用和示例

    一.SlidingMenu简介 相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界面效果,能方便的进行各种操作.很多优秀的应用都采用了 ...

  7. 【Android UI设计与开发】第17期:滑动菜单栏(二)开源项目SlidingMenu的示例

    通过上一篇文章的讲解,相信大家对于开源项目SlidingMenu都有了一个比较初步的了解(不了解的可以参考上 一篇文章),那么从这一章开始,博主将会以SlidingMenu为重心,给大家带来非常丰富的 ...

  8. 【Android UI设计与开发】10:滑动菜单栏(二)SlidingMenu 动画效果的实现

    其实就是在显示菜单栏时,有个动画的效果.代码比较简单,下面进行说明. 1.效果图如下,手机上查看效果更佳 2.代码实现,这里只讲解动画效果的实现,具体代码可在源代码中查看 <1> 先定义一 ...

  9. Android开发之利用ViewPager实现在Activity或Fragment中引入别的布局文件实现滑动并进行页面跳转

    有些时候经常可以看到其他APP中有一排的图标,可以在一个界面中滑来滑去,并且图标可以进行点击事件进行页面的跳转.这里对这种方法的实现做出总结. 首先看一下图片: 下面这两种图片是在一个Fragment ...

随机推荐

  1. hdu 3948(后缀数组+RMQ)

    题意:求一个串中有多少不同的回文串. 分析:这一题的关键是如何去重,我表示我现在还没理解为什么这样去重,先放这里过两天再看!! //不同回文子串数目 #include <iostream> ...

  2. Android 引用library project

    1.如何将一个android工程作为库工程(library project) library project是作为jar包被其它android工程使用的,首先它也是普通的android工程.然后: 1 ...

  3. DevExpress licenses.licx 的解决方法 z

    在 使用DevExpress控件的时候.每次对窗体进行更改的时候,都会出现一个对话框.发布的时候 也会出现一个对话框.之前的解决方法是在发布的时候把licenses.licx给删除掉,但是这个方法治标 ...

  4. 如何解决Rally模板提示angular js加载错误

    [前言] Rally是一个开源测试工具,用于测试openstack各个组件的性能 在使用Rally测试完毕后,一般会生成测试报告,这点很重要.但是原生态的Rally报告模板angular js框架是从 ...

  5. 完全参照系统自带的DatePickerDialog、TimePickerDialog的源代码仿写的DateTimePickerDialog

    完全参照系统自带的DatePickerDialog.TimePickerDialog的源代码仿写的DateTimePickerDialog.具有同时选择日期.时间的功能.在2.2.2.3平台,显示的效 ...

  6. webstorm下设置sass

    关于sass,就不想多说什么了.只要你有css基础,十分钟入门好吗.可以参考下资料:http://www.w3cplus.com/sassguide/ 今天想说的是webStorm下如何实现sass自 ...

  7. Android - LayoutInflater

    在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...

  8. CSS_网站配色参考方案

    http://www.cnblogs.com/QLeelulu/archive/2008/04/04/1136974.html   Shiny silver [#EEEEEE]       Reddi ...

  9. Codevs No.1163 访问艺术馆

    2016-05-31 20:48:47 题目链接: 访问艺术馆 (Codevs No.1163) 题目大意: 一个贼要在一个二叉树结构的艺术馆中偷画,画都处于叶子节点处,偷画和经过走廊都需要时间,求在 ...

  10. TQ210裸机编程(4)——按键(中断法)

    S5PV210有4个向量中断控制器(VIC),每个向量中断控制器包含32个中断源. 当某个中断源产生中断时,CPU会自动的将VICxVECTADDRy(x=0,1,2,3,y=0-31)寄存器的值赋给 ...