首先下载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. thinkPHP框架学习笔记

    class ZhuantiAction extends Action { public function index() { $name = trim($this->_get('name')); ...

  2. HTTPS科普扫盲帖【转】

    为什么需要https HTTP是明文传输的,也就意味着,介于发送端.接收端中间的任意节点都可以知道你们传输的内容是什么.这些节点可能是路由器.代理等. 举个最常见的例子,用户登陆.用户输入账号,密码, ...

  3. tree btn

    @*        <a href="javascript:void(0)" onclick="saveChecked()" ><img sr ...

  4. 九、oracle 事务

    一.什么是事务事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml(数据操作语言,增删改,没有查询)语句要么全部成功,要么全部失败.如:网上转账就是典型的要用事务来处理,用于保证数据的 ...

  5. MVC 包命名规范

    action+form = model     actionservlet+struts-config.xml= controller     jsp+自定义标签=veiw 备注:这里说明的非常好 m ...

  6. 三层交换机配置说明(华为S5700设置三个网段互通)

    1.配置Switch # 创建VLAN <HUAWEI> system-view[HUAWEI] sysname Switch[Switch] vlan batch 10 20 30# 配 ...

  7. Chapter 2 Open Book——10

    I sent that, and began again. 我发送了它,然后又一次重新开始写了. Mom,Everything is great. Of course it's raining. I ...

  8. runat="server" 是什么意思?

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...

  9. 导航条css实现和table实现

    导航条式样 <style type="text/css"> ul,li{ margin:0; padding:0; list-style:none; } #navtop ...

  10. Perl的调试方法

    来源: http://my.oschina.net/alphajay/blog/52172 http://www.cnblogs.com/baiyanhuang/archive/2009/11/09/ ...