content_frame.xml

 <?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />

左侧  menu_frame.xml

 <?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menu_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />

右侧  menu_frame_right.xml

 <?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menu_frame_right"
android:layout_width="match_parent"
android:layout_height="match_parent" />
 package com.cn.slidingmenu.fragment;

 import com.actionbarsherlock.view.MenuItem;
import com.cn.slidingmenu.fragment.R;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.CanvasTransformer;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity; import android.graphics.Canvas;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.animation.Interpolator; /**
* slidingmenu + fragment
*
* @author dr
*/
public class MainActivity extends SlidingFragmentActivity { private SlidingMenu sm;
private Fragment contentFragment;
private Fragment leftFragment; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_frame); // 设置SlidingMenu的layout
setBehindContentView(R.layout.menu_frame); if (savedInstanceState == null) {
contentFragment = new Fragment1();
} else {
// 取出之前保存的contentFragment
contentFragment = this.getSupportFragmentManager().getFragment(
savedInstanceState, "contentFragment");
}
// 设置当前的fragment
// getSupportFragmentManager JAR包当中的
this.getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, contentFragment).commit(); /** 设置SlidingMenu属性和layout */
// 得到SlidingMenu的对象
sm = getSlidingMenu();
// 设置slidingmenu滑动的方式
sm.setMode(SlidingMenu.LEFT_RIGHT);
// 设置slidingmenu边界的阴影图片
sm.setShadowDrawable(R.drawable.shadow);
// 设置阴影的宽度
sm.setShadowWidthRes(R.dimen.shadow_width);
// 设置slidingmenu宽度
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 设置slidingmenu宽度
// sm.setBehindWidth(400);
// 设置滑出slidingmenu范围
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
sm.setMenu(R.layout.menu_frame);
// 设置slidingmenu动画
sm.setBehindCanvasTransformer(null); // 设置menu的fragment
leftFragment = new LeftFragment();
this.getSupportFragmentManager().beginTransaction()
.replace(R.id.menu_frame, leftFragment).commit(); // 设置右侧的slidingmenu
sm.setSecondaryMenu(R.layout.menu_frame_right);
sm.setSecondaryShadowDrawable(R.drawable.shadowright); // 设置右侧滑出的slidingmenu
RightFragment rightFragment = new RightFragment();
this.getSupportFragmentManager().beginTransaction()
.replace(R.id.menu_frame_right, rightFragment).commit(); // 设置在slidingmenu页显示ActionBar
setSlidingActionBarEnabled(false);
// 是ActionBar的图标可以被点击
getSupportActionBar().setHomeButtonEnabled(true);
// 启用向左的图标
getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// 动态打开或关闭slidingmenu
sm.toggle();
break;
default:
break;
}
return true;
} @Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// 1.bundle
// 2.存放的ID
// 3.当前要保存的fragment的实例
this.getSupportFragmentManager().putFragment(outState,
"contentFragment", contentFragment);
} /**
* 切换fragment
*
* @param f
*/
public void switchFragment(Fragment f) {
contentFragment = f;
this.getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, contentFragment).commit();
sm.toggle();
} /**
* 缩放动画
*/
private CanvasTransformer canvasTransformer = new CanvasTransformer() { @Override
public void transformCanvas(Canvas canvas, float percentOpen) {
float scale = (float) (percentOpen * 0.25 + 0.75);
canvas.scale(scale, scale, canvas.getWidth() / 2,
canvas.getHeight() / 2);
} };
private static Interpolator interp = new Interpolator() {
@Override
public float getInterpolation(float t) {
t -= 1.0f;
return t * t * t + 1.0f;
}
}; /**
* 从下网上动画
*/
private CanvasTransformer canvasTransformer2 = new CanvasTransformer() { @Override
public void transformCanvas(Canvas canvas, float percentOpen) {
canvas.translate(
0,
canvas.getHeight()
* (1 - interp.getInterpolation(percentOpen)));
} }; /**
* 拉伸动画
*/
private CanvasTransformer canvasTransformer3 = new CanvasTransformer() {
@Override
public void transformCanvas(Canvas canvas, float percentOpen) {
canvas.scale(percentOpen, 1, 0, 0); }
}; }
 package com.cn.slidingmenu.fragment;

 import com.cn.slidingmenu.fragment.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; public class Fragment1 extends Fragment { @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//设置fragment的layout
View view = inflater.inflate(R.layout.text, null);
TextView tv = (TextView) view.findViewById(R.id.test);
tv.setText(Fragment1.class.getSimpleName());
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
} }
 package com.cn.slidingmenu.fragment;

 import java.util.ArrayList;
import java.util.List;
import com.cn.slidingmenu.fragment.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView; public class LeftFragment extends Fragment implements OnItemClickListener { private View rootView; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// 设置fragment的layout
rootView = inflater.inflate(R.layout.activity_main, null);
return rootView;
} @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ListView lv = (ListView) rootView.findViewById(R.id.listview); List<String> list = initData(); ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, android.R.id.text1, list); lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
} /**
* 初始化数据
* @return
*/
public List<String> initData() {
List<String> list = new ArrayList<String>();
list.add(Fragment1.class.getSimpleName());
list.add(Fragment2.class.getSimpleName());
list.add(Fragment3.class.getSimpleName());
list.add(Fragment4.class.getSimpleName());
list.add(Fragment5.class.getSimpleName());
return list;
} @Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Fragment f = null;
switch (position) {
case 0:
f = new Fragment1();
break;
case 1:
f = new Fragment2();
break;
case 2:
f = new Fragment3();
break;
case 3:
f = new Fragment4();
break;
case 4:
f = new Fragment5();
break;
default:
f = new Fragment1();
break;
}
switchFragment(f);
} /**
* listview item 点击时切换fragment
* @param f
*/
private void switchFragment(Fragment f) {
if (getActivity() instanceof MainActivity) {
MainActivity activity = (MainActivity) getActivity();
activity.switchFragment(f);
}
} }
 package com.cn.slidingmenu.fragment;

 import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView; public class RightFragment extends Fragment { private View rootView; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.activity_main, null);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ListView lv = (ListView) rootView.findViewById(R.id.listview);
List<String> list = initData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getActivity(),
android.R.layout.simple_list_item_1,
android.R.id.text1,
list); lv.setAdapter(adapter);
} /**
* 初始化数据
* @return
*/
public List<String> initData() {
List<String> list = new ArrayList<String>();
list.add(Fragment1.class.getSimpleName());
list.add(Fragment2.class.getSimpleName());
list.add(Fragment3.class.getSimpleName());
list.add(Fragment4.class.getSimpleName());
list.add(Fragment5.class.getSimpleName());
return list;
} }

DEMO下载地址:http://pan.baidu.com/s/1o6v7iX0

文件中三个包,  SlidingMenuFragment21引用library,library引用actionbarsherlock。

slidingmenu + fragment 左右菜单滑动的更多相关文章

  1. slidingmenu+fragment实现经常使用的側滑效果(包含Fragment状态的保存)

    一.需求 关于fragment的问题,一直想写一篇博客了.应该当初自己也是对这玩意一点都不熟悉到如今也大概知道个日常的使用的地步. 一个側滑的导航栏,内有4个条目.每个选项点击进入相应的界面,每个界面 ...

  2. Android开源库--SlidingMenu左右侧滑菜单

    如果说我比别人看得更远些,那是因为我站在了巨人的肩上.   github地址:https://github.com/jfeinstein10/SlidingMenu   设置: 1.下载之后以依赖项的 ...

  3. 利用jquery实现百度新闻导航菜单滑动动画

    前言 前两天,群里有人问百度新闻导航是如何实现的,当时由于忙于工作,没有来得及细看,恰好今天有空闲时间,索性就实现一下这个效果吧: 思路与步骤 1.利用UL创建简单横向导航: <!DOCTYPE ...

  4. SlidingMenu侧换菜单的导入

    对于Adt-22.3有一种使用SlidingMenu(侧滑菜单的方式),直接加你放到lib文件夹下

  5. 【Web】利用jquery实现百度新闻导航菜单滑动动画

    前言 前两天,群里有人问百度新闻导航是如何实现的,当时由于忙于工作,没有来得及细看,恰好今天有空闲时间,索性就实现一下这个效果吧: 思路与步骤 1.利用UL创建简单横向导航: <!DOCTYPE ...

  6. React-Native 之 GD (十九)TabBarItem 逻辑完善 / 关闭筛选菜单滑动手势 / Navigator 掉帧卡顿问题处理

    1.TabBarItem 逻辑完善 那么为了更好的用户体验,我们这边还需要来处理一下点击 TabBarItem 的一下细节,那就是当用户点击 Item 时,可能只是单纯的想进行页面的 切换或者置顶操作 ...

  7. SlidingMenu和ActionBarSherlock结合滑动式菜单都

    https://github.com/jfeinstein10/SlidingMenu http://actionbarsherlock.com/ SlidingMenu 的demo工程引用了Acti ...

  8. slidingMenu默认显示菜单

    关键词:slidingmenu 默认 显示 打开 菜单 showMenu toggle 问题:要在Activity一打开就显示slidingmenu. 解决: 搜索“slidingmenu 默认打开” ...

  9. ViewPager 详解(五)-----使用Fragment实现ViewPager滑动

    前言:前几篇文章讲解了ViewPager的普通实现方法,但Android官方最推荐的一种实现方法却是使用fragment,下面我们使用fragment来重新实现一下第一篇<ViewPager 详 ...

随机推荐

  1. 源代码管理工具TFS2013安装与使用【转载】

    本文来源:博客园:http://www.cnblogs.com/suxinlcq/p/3956930.html 作者:suxin 最近公司新开发一个项目要用微软的TFS2013进行项目的源代码管理,以 ...

  2. SDUT2484算术表达式的转换

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2484&cid=1182 题目描述 小明在学习了数据结构之后,突然想起了以前没有解决的算术 ...

  3. hdu 4412 Sky Soldiers DP

    动态规划,主要是用单调性求区间的最小期望. 代码如下: #include<iostream> #include<stdio.h> #include<algorithm&g ...

  4. Linux文件系统介绍

    1.ext2/ext3(日志功能)文件系统(Linux标准文件系统.一种索引式文件系统) SuperBlock:Superblock是记录整个filesystem 相关信息的地方,没有Superblo ...

  5. 实用Photoshop快捷键

    面板快捷键:shift+对应的快捷键调用同类工具 Ctrl + 点击面板------获取选取 Shift + F6-----------羽化 Alt + Delete---------填充前景色 Ct ...

  6. C++:构造函数的重载

    构造函数的重载的判断条件是:参数的个数或者类型不同,其他要保持一样 举例说明: 方式一:在类中声明重载构造函数,在类外定义 //第一种方法: #include<iostream> usin ...

  7. OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务

    OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务   1.  OpenVAS基础知识 OpenVAS(Open Vulnerability Assessment Sys ...

  8. 构建linux内核源码树

    编写驱动程序时,需要内核源码树的支持.内核源码树时从内核源代码编译得到的.下面开始构造内核源代码的步骤.以Ubuntu为例子 1. 下载内源代码,位置www.kernel.org. (注意:源码树内核 ...

  9. .net MVC APi调用

    常用的调用方法为Get/Post Get方法: 服务器 public string Get(int id) { return "value"; } 这个直接在网页就可以测试,用 h ...

  10. Windows 7更改SVN账户密码

    首先说明下我的系统是Windows7 今天更改了SVN账号和密码,然后想要更改一下Eclipse的SVN登录用户名和密码 但是网上找了一大推说什么客户端的,靠净扯淡. 本人亲测最有效的方法是删除C盘下 ...