首先下载SlidingMenu,有Library和Sample,然后在自己的项目中引入类库(引入智慧北京工作空间的Library),然后V4包会发生冲突,删掉自己项目Libs目录下的V4包即可

侧滑布局和主界面布局都先用一个空布局填充一下(FrameLayout),

UI框架搭建简介:整个界面就是一个MainActivity,MainActivity左边是一个滑动侧边栏,是一个Fragment;MainActivity主体又是一个Fragment(三个Fragment中的某一个),左侧边栏Fragment依附于MainActivity,三个主体Fragment依附于侧边栏Fragment

项目的代码结构:

MainActivity的代码:

//一打开程序默认就是读者Fragment
public class MainActivity extends SlidingFragmentActivity{
//改为Public
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);//把主布局设置为空布局(FrameLayout) setBehindContentView(R.layout.left_menu);//把左侧边栏布局设置为空布局
SlidingMenu slidingMenu = getSlidingMenu();
//设置触摸模式为全屏触摸
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
//设置预留屏幕的宽度为110dp
slidingMenu.setBehindOffset(SizeUtils.dip2px(MainActivity.this, 110)); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//把左侧菜单的空布局替换成Fragment,注意,一定是用R.id,即FrameLayout的ID
//而不是R.layout,不是布局文件的ID
transaction.replace(R.id.left_menu, new FragmentLeft());
//把主内容的空FrameLayout的ID替换成读者Fragment
transaction.replace(R.id.activity_main, new ReaderFragment(MainActivity.this));
transaction.commit(); } }

左侧菜单Fragment的布局:

/**左侧菜单的Fragment,在左侧菜单Fragment里面处理点击事件*/
public class FragmentLeft extends Fragment implements OnClickListener {
private View view; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = View.inflate(getActivity(), R.layout.left_menu_fragment, null); initView();
return view;
} private void initView() {
//左侧菜单的读者
TextView tv_duzhe= (TextView) view.findViewById(R.id.tv_duzhe);
//左侧菜单的充值
TextView tv_pay= (TextView) view.findViewById(R.id.tv_pay);
//左侧菜单的收藏
TextView tv_collect= (TextView) view.findViewById(R.id.tv_collect); tv_duzhe.setOnClickListener(this);
tv_pay.setOnClickListener(this);
tv_collect.setOnClickListener(this);
} @Override
public void onClick(View v) {
//获取SlidingMenu
SlidingFragmentActivity activity= (SlidingFragmentActivity)getActivity();
SlidingMenu slidingMenu = activity.getSlidingMenu(); switch (v.getId()) {
case R.id.tv_duzhe:
ReaderFragment readerFragment = new ReaderFragment(getActivity());
getActivity().getSupportFragmentManager()
.beginTransaction().replace(R.id.activity_main, readerFragment).commit();
slidingMenu.toggle();
break;
case R.id.tv_pay:
//当每次点击充值时,就用充值Fragment替换主布局,主布局就是一个FrameLayout
PayFragment payFragment = new PayFragment(getActivity());
getActivity().getSupportFragmentManager().
beginTransaction().replace(R.id.activity_main, payFragment).commit(); //Fragment替换之后,就关闭侧边栏 slidingMenu.toggle();//如果侧边栏是打开的,就关闭,反之亦然
break;
case R.id.tv_collect:
       //收藏Fragment
getActivity().getSupportFragmentManager().beginTransaction().
replace(R.id.activity_main, new CollectFragment(getActivity())).commit();
slidingMenu.toggle();
break; default:
break;
}
}
}

读者的Fragment,Fragment里的布局就是两个字,其它两个Fragment一模一样,就不写了

/**读者的Fragment*/
public class ReaderFragment extends Fragment {
private Context context;
/**由于ReaderFragment是依附于侧边栏Fragment的,所以不能用getActivity()来获取上下文,必须传过来*/
public ReaderFragment(Context context){
this.context=context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
System.out.println("读者Fragment");
View view = View.inflate(context, R.layout.fragment_duzhe, null);
return view;
}
}

这就是类似于读者APP的界面,运行效果图如下:

SlidingMenu的使用,结合Fragment(eclipse环境)的更多相关文章

  1. CentOS_7 OpenWrt Eclipse 环境搭建与 Dr.com 开发笔记

    一:内核的编译. 1,linux 编译环境的搭建与源码的准备工作 2,常用软件的安装 (make menuconfig) 3,  针对TP-Link WR740N 一些软件的openwrt 的移植 4 ...

  2. 利用Continuous Testing实现Eclipse环境自动单元测试

    当你Eclipse环境中修改项目中的某个方法时,你可能由于各种原因没有运行单元测试,结果代码提交,悲剧就可能随之而来. 所幸infinitest(http://infinitest.github.io ...

  3. selenium eclipse环境搭建

    1.python 3.5下载及安装 2.setuptools 与pip 下载地址是:http://pypi.Python.org/pypi/setuptools http://pypi.Python. ...

  4. 详细的图文教程来实现 eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上

    很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置tomcat时,总会有种难下手的感觉,在此,通过图文解说的方法,最直观的向大家演示一遍该配置过程. 第一部分:eclipse环境下如何配 ...

  5. Eclipse环境下JBoss调试,解决引用的工程不被部署的问题

    其实算是一个很小的经验,在eclipse环境下进行jboss的部署,因为要定义某公共包的问题,将代码down下来做了个工程,部署时发现jboss提示:class not found! 从jboss部署 ...

  6. 利用Continuous Testing实现Eclipse环境自己主动单元測试

    当你Eclipse环境中改动项目中的某个方法时,你可能因为各种原因没有执行单元測试,结果代码提交,悲剧就可能随之而来. 所幸infinitest(http://infinitest.github.io ...

  7. eclipse环境下如何配置tomcat

    eclipse环境下如何配置tomcat 很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置tomcat时,总会有种难下手的感觉,在此,通过图文解说的方法,最直观的向大家演示一遍该配置过 ...

  8. eclipse环境下基于已构建struts2项目整合spring+hibernate

    本文是基于已构建的struts2项目基础上整合 spring+hibernate,若读者还不熟悉struts2项目,请先阅读 eclipse环境下基于tomcat-7.0.82构建struts2项目 ...

  9. Java学习不走弯路教程(7.Eclipse环境搭建)

    7.Eclipse环境搭建 在前几章,我们熟悉了DOS环境下编译和运行Java程序,对于大规模的程序编写,开发工具是必不可少的.Java的开发工具比较常用的是Eclipse.在接下来的教程中,我们将基 ...

  10. Eclipse环境搭建并且运行wordcount程序

    一.安装Hadoop插件 1. 所需环境  hadoop2.0伪分布式环境平台正常运行 所需压缩包:eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz 在Linu ...

随机推荐

  1. MyBatis 错误:Invalid bound statement (not found)

    错误: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.zr.msgg.per ...

  2. Redis4- llist的操作

    数据类型List链表(1)介绍list类型其实就是一个双向链表.通过push,pop操作从链表的头部或者尾部添加删除元素.这使得list既可以用作栈,也可以用作队列.该list链表类型应用场景:获得最 ...

  3. MySQL python组件安装

    可使用pip进行安装 pip install MySQL-python 如出现以下错误 _mysql.c::: 错误:my_config.h:没有那个文件或目录 _mysql.c::: 错误:mysq ...

  4. CSS问题:怎么样让鼠标经过按钮的时候发生的状态一直停留在当页呢?

    $('p').mouseenter(function(){ $('p').css('background-color','yellow'); }); 只写一个mouseenter的动态效果的话是不能达 ...

  5. ios给textView提价提示性文字

    不推荐使用的方式 但是在用的时候才发现原来textView没有类似于textField的那种placeholder功能.所谓placeholder就比如用户看到一个输入框,然后输入框里面一般会有几个浅 ...

  6. nginx源码学习资源

    http://www.cnblogs.com/yjf512/archive/2012/06/13/2548515.html nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源 ...

  7. Chapter 2 Open Book——19

    He bent over and began scraping together a pile of the white mush. 他弯下腰,开始团起一个白色的雪球. "I'll see ...

  8. 查看当前目录每个文件的大小(linux)

    du -sh * 查看当前目录每个文件的大小

  9. 第3章 Java语言基础----声明成员变量,对变量进行赋值

    声明成员变量,对变量进行赋值的正确语句,如下图所示:

  10. project文件问题

    到编译文件中看看,红色的删除,坤哥这样做的 .