转 android 侧滑实现
本篇博客给大家分享一个效果比较好的侧滑菜单的Demo,实现点击左边菜单切换Fragment。
效果如下:
主Activity代码:
- package com.infzm.slidingmenu.demo;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.Window;
- import android.widget.ImageView;
- import android.widget.TextView;
- import com.infzm.slidingmenu.demo.fragment.LeftFragment;
- import com.infzm.slidingmenu.demo.fragment.TodayFragment;
- import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
- import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
- /**
- * @date 2014/11/14
- * @author wuwenjie
- * @description 主界面
- */
- public class MainActivity extends SlidingFragmentActivity implements
- OnClickListener {
- private ImageView topButton;
- private Fragment mContent;
- private TextView topTextView;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- requestWindowFeature(Window.FEATURE_NO_TITLE); // 无标题
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initSlidingMenu(savedInstanceState);
- topButton = (ImageView) findViewById(R.id.topButton);
- topButton.setOnClickListener(this);
- topTextView = (TextView) findViewById(R.id.topTv);
- }
- /**
- * 初始化侧边栏
- */
- private void initSlidingMenu(Bundle savedInstanceState) {
- // 如果保存的状态不为空则得到之前保存的Fragment,否则实例化MyFragment
- if (savedInstanceState != null) {
- mContent = getSupportFragmentManager().getFragment(
- savedInstanceState, "mContent");
- }
- if (mContent == null) {
- mContent = new TodayFragment();
- }
- // 设置左侧滑动菜单
- setBehindContentView(R.layout.menu_frame_left);
- getSupportFragmentManager().beginTransaction()
- .replace(R.id.menu_frame, new LeftFragment()).commit();
- // 实例化滑动菜单对象
- SlidingMenu sm = getSlidingMenu();
- // 设置可以左右滑动的菜单
- sm.setMode(SlidingMenu.LEFT);
- // 设置滑动阴影的宽度
- sm.setShadowWidthRes(R.dimen.shadow_width);
- // 设置滑动菜单阴影的图像资源
- sm.setShadowDrawable(null);
- // 设置滑动菜单视图的宽度
- sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
- // 设置渐入渐出效果的值
- sm.setFadeDegree(0.35f);
- // 设置触摸屏幕的模式,这里设置为全屏
- sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
- // 设置下方视图的在滚动时的缩放比例
- sm.setBehindScrollScale(0.0f);
- }
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- getSupportFragmentManager().putFragment(outState, "mContent", mContent);
- }
- /**
- * 切换Fragment
- *
- * @param fragment
- */
- public void switchConent(Fragment fragment, String title) {
- mContent = fragment;
- getSupportFragmentManager().beginTransaction()
- .replace(R.id.content_frame, fragment).commit();
- getSlidingMenu().showContent();
- topTextView.setText(title);
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.topButton:
- toggle();
- break;
- default:
- break;
- }
- }
- }

package com.infzm.slidingmenu.demo; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
import android.widget.TextView; import com.infzm.slidingmenu.demo.fragment.LeftFragment;
import com.infzm.slidingmenu.demo.fragment.TodayFragment;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity; /**
* @date 2014/11/14
* @author wuwenjie
* @description 主界面
*/
public class MainActivity extends SlidingFragmentActivity implements
OnClickListener { private ImageView topButton;
private Fragment mContent;
private TextView topTextView; @Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE); // 无标题
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initSlidingMenu(savedInstanceState); topButton = (ImageView) findViewById(R.id.topButton);
topButton.setOnClickListener(this);
topTextView = (TextView) findViewById(R.id.topTv);
} /**
* 初始化侧边栏
*/
private void initSlidingMenu(Bundle savedInstanceState) {
// 如果保存的状态不为空则得到之前保存的Fragment,否则实例化MyFragment
if (savedInstanceState != null) {
mContent = getSupportFragmentManager().getFragment(
savedInstanceState, "mContent");
} if (mContent == null) {
mContent = new TodayFragment();
} // 设置左侧滑动菜单
setBehindContentView(R.layout.menu_frame_left);
getSupportFragmentManager().beginTransaction()
.replace(R.id.menu_frame, new LeftFragment()).commit(); // 实例化滑动菜单对象
SlidingMenu sm = getSlidingMenu();
// 设置可以左右滑动的菜单
sm.setMode(SlidingMenu.LEFT);
// 设置滑动阴影的宽度
sm.setShadowWidthRes(R.dimen.shadow_width);
// 设置滑动菜单阴影的图像资源
sm.setShadowDrawable(null);
// 设置滑动菜单视图的宽度
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 设置渐入渐出效果的值
sm.setFadeDegree(0.35f);
// 设置触摸屏幕的模式,这里设置为全屏
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
// 设置下方视图的在滚动时的缩放比例
sm.setBehindScrollScale(0.0f); } @Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
getSupportFragmentManager().putFragment(outState, "mContent", mContent);
} /**
* 切换Fragment
*
* @param fragment
*/
public void switchConent(Fragment fragment, String title) {
mContent = fragment;
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, fragment).commit();
getSlidingMenu().showContent();
topTextView.setText(title);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.topButton:
toggle();
break;
default:
break;
}
} }
侧边栏菜单Fragment
- package com.infzm.slidingmenu.demo.fragment;
- import android.app.Activity;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup;
- import com.infzm.slidingmenu.demo.MainActivity;
- import com.infzm.slidingmenu.demo.R;
- /**
- * @date 2014/11/14
- * @author wuwenjie
- * @description 侧边栏菜单
- */
- public class LeftFragment extends Fragment implements OnClickListener{
- private View todayView;
- private View lastListView;
- private View discussView;
- private View favoritesView;
- private View commentsView;
- private View settingsView;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.layout_menu, null);
- findViews(view);
- return view;
- }
- public void findViews(View view) {
- todayView = view.findViewById(R.id.tvToday);
- lastListView = view.findViewById(R.id.tvLastlist);
- discussView = view.findViewById(R.id.tvDiscussMeeting);
- favoritesView = view.findViewById(R.id.tvMyFavorites);
- commentsView = view.findViewById(R.id.tvMyComments);
- settingsView = view.findViewById(R.id.tvMySettings);
- todayView.setOnClickListener(this);
- lastListView.setOnClickListener(this);
- discussView.setOnClickListener(this);
- favoritesView.setOnClickListener(this);
- commentsView.setOnClickListener(this);
- settingsView.setOnClickListener(this);
- }
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- }
- @Override
- public void onClick(View v) {
- Fragment newContent = null;
- String title = null;
- switch (v.getId()) {
- case R.id.tvToday: // 今日
- newContent = new TodayFragment();
- title = getString(R.string.today);
- break;
- case R.id.tvLastlist:// 往期列表
- newContent = new LastListFragment();
- title = getString(R.string.lastList);
- break;
- case R.id.tvDiscussMeeting: // 讨论集会
- newContent = new DiscussFragment();
- title = getString(R.string.discussMeetting);
- break;
- case R.id.tvMyFavorites: // 我的收藏
- newContent = new MyFavoritesFragment();
- title = getString(R.string.myFavorities);
- break;
- case R.id.tvMyComments: // 我的评论
- newContent = new MyCommentsFragment();
- title = getString(R.string.myComments);
- break;
- case R.id.tvMySettings: // 设置
- newContent = new MySettingsFragment();
- title = getString(R.string.settings);
- break;
- default:
- break;
- }
- if (newContent != null) {
- switchFragment(newContent, title);
- }
- }
- /**
- * 切换fragment
- * @param fragment
- */
- private void switchFragment(Fragment fragment, String title) {
- if (getActivity() == null) {
- return;
- }
- if (getActivity() instanceof MainActivity) {
- MainActivity fca = (MainActivity) getActivity();
- fca.switchConent(fragment, title);
- }
- }
- }

package com.infzm.slidingmenu.demo.fragment; import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup; import com.infzm.slidingmenu.demo.MainActivity;
import com.infzm.slidingmenu.demo.R;
/**
* @date 2014/11/14
* @author wuwenjie
* @description 侧边栏菜单
*/
public class LeftFragment extends Fragment implements OnClickListener{
private View todayView;
private View lastListView;
private View discussView;
private View favoritesView;
private View commentsView;
private View settingsView; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} @Override
public void onAttach(Activity activity) {
super.onAttach(activity);
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_menu, null);
findViews(view); return view;
} public void findViews(View view) {
todayView = view.findViewById(R.id.tvToday);
lastListView = view.findViewById(R.id.tvLastlist);
discussView = view.findViewById(R.id.tvDiscussMeeting);
favoritesView = view.findViewById(R.id.tvMyFavorites);
commentsView = view.findViewById(R.id.tvMyComments);
settingsView = view.findViewById(R.id.tvMySettings); todayView.setOnClickListener(this);
lastListView.setOnClickListener(this);
discussView.setOnClickListener(this);
favoritesView.setOnClickListener(this);
commentsView.setOnClickListener(this);
settingsView.setOnClickListener(this);
} @Override
public void onDestroyView() {
super.onDestroyView();
} @Override
public void onDestroy() {
super.onDestroy();
} @Override
public void onClick(View v) {
Fragment newContent = null;
String title = null;
switch (v.getId()) {
case R.id.tvToday: // 今日
newContent = new TodayFragment();
title = getString(R.string.today);
break;
case R.id.tvLastlist:// 往期列表
newContent = new LastListFragment();
title = getString(R.string.lastList);
break;
case R.id.tvDiscussMeeting: // 讨论集会
newContent = new DiscussFragment();
title = getString(R.string.discussMeetting);
break;
case R.id.tvMyFavorites: // 我的收藏
newContent = new MyFavoritesFragment();
title = getString(R.string.myFavorities);
break;
case R.id.tvMyComments: // 我的评论
newContent = new MyCommentsFragment();
title = getString(R.string.myComments);
break;
case R.id.tvMySettings: // 设置
newContent = new MySettingsFragment();
title = getString(R.string.settings);
break;
default:
break;
}
if (newContent != null) {
switchFragment(newContent, title);
}
} /**
* 切换fragment
* @param fragment
*/
private void switchFragment(Fragment fragment, String title) {
if (getActivity() == null) {
return;
}
if (getActivity() instanceof MainActivity) {
MainActivity fca = (MainActivity) getActivity();
fca.switchConent(fragment, title);
}
} }
上面是核心代码,引入SlidingMenu开源库。
Demo下载地址:http://download.csdn.net/download/wwj_748/8184889
转 android 侧滑实现的更多相关文章
- Android侧滑菜单代码实现
前两天学习了hyman老师讲的Android侧滑菜单的实现,经过自己的整理分享出来给大家学习一下 现在很多APP都有菜单侧滑的功能,本篇文章主要讲解使用自定义的HorizontalScrollView ...
- Android 侧滑菜单的简单实现(SlidingMenu)二
在上一篇博文中已经简单的实现了侧滑菜单,代码也很简单,就几行代码. 这篇文章依然讲侧滑菜单,与前一篇文章不同的是,这篇文章用不同的代码方式来实现侧滑菜单. 在前面的文章中已经用了在Activity中通 ...
- Android 侧滑菜单的简单实现(SlidingMenu)
在我还没有学习Android的时候就用过侧滑菜单的APP,当时第一个感觉是:哇塞,这效果不错!当然,现在自己都已经学Android了,这效果当然也要做出来啊~ SlidingMenu是一种比较新的设置 ...
- android侧滑菜单笔记
一.SlidingPaneLayout v4包下的控件,使用简单,功能简洁.官方文档明确说明该控件只能左侧滑动.使用如下: <android.support.v4.widget.SlidingP ...
- android侧滑删除,模仿qq跟进item显示删除按钮
今天所写的代码只是为了个人以后查询方便,如果你参考了并且在使用中遇到问题也可以在这里直接回复我 SwipeDelMenuLayout: 效果图: item布局: <?xml version=&q ...
- 教你用DrawLayout 实现Android 侧滑菜单
现在的APP越来越注重用户体验,百度视频客户端有一个特效还是挺吸引人的,在主界面手指向右滑动,就可以将菜单展示出来,而主界面会被隐藏大部分,但是仍有左侧的一小部分同菜单一起展示.类似的还有天天动听,人 ...
- android侧滑效果,SlidingMenu配置
最近开始做点东西,需要用到android activity侧滑的效果.感觉配置起来还是有点小麻烦,总结一下以便回顾. 需要的东西: 1.SlidingMenu项目:点击打开链接 2.ActionBar ...
- android 侧滑菜单
就是用手一滑才出现,占手机半个多屏幕的菜单.为了美观和页面转跳,很多时候要用到. 实现的话就是使用官方的DrawerLayout,注意这个布局一定要是最顶层的布局. 在DrawerLayout里面直接 ...
- android侧滑效果(引用官方网站提供的API文件)
原文地址:http://www.cnblogs.com/android100/p/android-SlidingMenu.html 在新浪微博和唱吧里面都有看到android的侧滑效果,于是想要学习一 ...
随机推荐
- NET基础课--XML基础
id level是属性,title为子节点 接下来操作子节点 比较xml的处理方式: 1和3适合数据量小的时候.
- webapi单元测试时出现的ConfigurationManager.ConnectionStrings为空错误
这个是读取配置文件没读到的问题,解决方法很简单,把webapi的配置文件复制到单元测试项目中,并把名字改为App.config即可. 同时 ,推荐使用Unit Test Genertor来做测试,这个 ...
- android 补间动画
android开发过程中,为了更好的展示应用程序,应用程序添加动画,能够很好地实现这个功能.如果动画中的图像变化有一定的规律,可以采用自动生成图像的方式来生成动画,例如图像的移动.旋转.缩放等.自动生 ...
- DWZ在APS.NET WebForm中的使用(二)
任何框架由于个人理解不到位或者框架自身的局限性,在项目实施中,大家或多或少都会遇到一些问题,下面我就讲述下我在使用DWZ开发过程中的几个问题.如有一点能帮助到你,这篇文章也算有存在的意义了. 1.树菜 ...
- 封装一些数据库SQLCipher的方法(增、删、改、查)
上一篇随笔只是简单的说了一下使用SQLCipher框架,介绍的比较笼统,可能看一遍之后更加蒙圈了,为了更好的使用这个数据库,整理了我在公司项目的需要用的方法,包括创建表,插入数据,更新数据,搜索查询数 ...
- hdu2317Nasty Hacks
Problem Description You are the CEO of Nasty Hacks Inc., a company that creates small pieces of mali ...
- HDU 5794 - A Simple Chess
HDU 5794 - A Simple Chess题意: 马(象棋)初始位置在(1,1), 现在要走到(n,m), 问有几种走法 棋盘上有r个障碍物, 该位置不能走, 并规定只能走右下方 数据范围: ...
- codeforces #330 div2
A: #include<cstdio> #include<algorithm> #include<cmath> #include<map> #inclu ...
- E - Number Sequence(第二季水)
Description A single positive integer i is given. Write a program to find the digit located in the p ...
- oracle学习-安装卸载