首先下载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. Python 学习笔记5

    Life is like a box of chocolate. 今天继续学习Python数据结构. http://www.pythondoc.com/pythontutorial3/datastru ...

  2. Win7的64位系统如何搭建安卓Android开发环境

    在搭建安卓Android开发环境,那么现在比较主流的Win7的64位操作系统如何搭建呢?其实很简单,不需要设置任何环境变量,只需要下载两个程序包(ADT和JDK),下载的时候注意选择相应的64位程序包 ...

  3. 简单的JDBC连接oracle数据库例子

    java连接Oracle数据库 JDBC(Java Data Base Connectivity,java数据库连接),那么我们该如何用java进行数据库的连接呢. import java.sql.C ...

  4. 二、oracle sql*plus常用命令

    一.sys用户和system用户Oracle安装会自动的生成sys用户和system用户(1).sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户 ...

  5. <转>如何高效快速看懂Android源码

    原网址:http://jingyan.baidu.com/article/574c5219ca78ed6c8d9dc12a.html 在Android系统上工作了一段时间,经常会遇到题目中的问题,下面 ...

  6. DOM操作-遍历一个元素的所有属性

    代码: <!DOCTYPE html> <html> <head> <title>遍历打印一个元素的所有属性</title> <met ...

  7. nefu 1029 字符串

    Description 给定一个字符串,现在要你从这个字符串中找到第一个只出现一次的字符 ,很简单吧! 快敲代码,动作! Input 多组输入,每行一个字符串(小写字母a~z)字符串长度不超过50 O ...

  8. Go-new和make

    new返回指向struct的指针,new仅分配内存,而不对对象的值进行初始化 make返回到strcut的对象,而不是指针,只能创建map,slice,channel对象 make([]string, ...

  9. php 获取地址栏参数

    javascript实现: top.location.href 顶级窗口的地址this.location.href 当前窗口的地址 PHP实现: //获取域名或主机地址 echo $_SERVER[' ...

  10. 使用 Eclipse Memory Analyzer 进行简单内存泄漏分析

    Java 内存泄露的根本原因: 保存了不可能再被访问的变量类型的引用.因此我们的目的就是要找出这样的引用. 1.测试代码: public class MainActivity extends Acti ...