Android UI实现SlidingMenu侧滑菜单效果_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;
    }
  } 

} 

侧边栏菜单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);
    }
  } 

}

上面是核心代码,引入SlidingMenu开源库。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
slidingmenu侧滑菜单、slidingmenu关闭侧滑、slidingmenu点击侧滑、slidingmenu菜单点击、slidingmenu关闭菜单,以便于您获取更多的相关知识。

时间: 2024-09-12 02:59:56

Android UI实现SlidingMenu侧滑菜单效果_Android的相关文章

Android自定义控件简单实现侧滑菜单效果_Android

侧滑菜单在很多应用中都会见到,最近QQ5.0侧滑还玩了点花样~~对于侧滑菜单,一般大家都会自定义ViewGroup,然后隐藏菜单栏,当手指滑动时,通过Scroller或者不断的改变leftMargin等实现:多少都有点复杂,完成以后还需要对滑动冲突等进行处理~~今天给大家带来一个简单的实现,史上最简单有点夸张,但是的确是我目前遇到过的最简单的一种实现~~~ 1.原理分析 既然是侧滑,无非就是在巴掌大的屏幕,塞入大概两巴掌大的布局,需要滑动可以出现另一个,既然这样,大家为啥不考虑使用Android

Android开源组件SlidingMenu侧滑菜单使用介绍_Android

现在很多android应用都有侧滑菜单,效果很不错. GitHub上有SlidingMenu的开源库,使用起来很方便. SlidingMenu GitHub地址:https://github.com/jfeinstein10/SlidingMenu.GitHub上说,Sliding结合ActionBarSherlock使用功能可以更丰富,ActionBarSherlock GitHub地址:https://github.com/JakeWharton/ActionBarSherlock 附csd

Android开源组件SlidingMenu侧滑菜单使用介绍

现在很多android应用都有侧滑菜单,效果很不错. GitHub上有SlidingMenu的开源库,使用起来很方便. SlidingMenu GitHub地址:https://github.com/jfeinstein10/SlidingMenu.GitHub上说,Sliding结合ActionBarSherlock使用功能可以更丰富,ActionBarSherlock GitHub地址:https://github.com/JakeWharton/ActionBarSherlock 附csd

Android中DrawerLayout实现侧滑菜单效果

众所周知,android里面我们很熟悉的一个功能,侧滑菜单效果在以前我们大部分都是用的slidingmenu这个开源框架,自从谷歌官方新出的一个DrawerLayout控件之后,越来越多的应用开始使用谷歌的官方的控件写这个效果了. 话不多说,先来发图以表我滴诚意: 开始写代码 DrawerLayout 是v4包里面的,所以项目里面需要添加v4包,具体怎么添加就不多说了, NavigationView需要在build.gradle里面添加compile 'com.android.support:d

Android自定义控件简单实现侧滑菜单效果

侧滑菜单在很多应用中都会见到,最近QQ5.0侧滑还玩了点花样~~对于侧滑菜单,一般大家都会自定义ViewGroup,然后隐藏菜单栏,当手指滑动时,通过Scroller或者不断的改变leftMargin等实现:多少都有点复杂,完成以后还需要对滑动冲突等进行处理~~今天给大家带来一个简单的实现,史上最简单有点夸张,但是的确是我目前遇到过的最简单的一种实现~~~ 1.原理分析 既然是侧滑,无非就是在巴掌大的屏幕,塞入大概两巴掌大的布局,需要滑动可以出现另一个,既然这样,大家为啥不考虑使用Android

Android自定义VIew实现卫星菜单效果浅析_Android

 一 概述: 最近一直致力于Android自定义VIew的学习,主要在看<android群英传>,还有CSDN博客鸿洋大神和wing大神的一些文章,写的很详细,自己心血来潮,学着写了个实现了类似卫星效果的一个自定义的View,分享到博客上,望各位指点一二.写的比较粗糙,见谅.(因为是在Linux系统下写的,效果图我直接用手机拍的,难看,大家讲究下就看个效果,勿喷). 先来看个效果图,有点不忍直视: 自定义VIew准备: (1)创建继承自View的类; (2)重写构造函数; (3)定义属性. (

Android实现伸缩弹力分布菜单效果的示例_Android

这两天无意间看到一园友的博文实现Path2.0中绚丽的的旋转菜单,感觉效果不错,但是发现作者没有处理线程安全的问题,所以在这里我修正了下,并且改善下部分功能.今天发布这篇文章的目的是希望能在Android用户体验上提出一些相关的解决方案,方便我们在开发项目或产品时增强用户体验效果,当然也希望能起到抛砖引玉的作用. =废话不多说,还是老规矩,先让我们看一下实现的效果图: =在上图中,我将菜单弹出的效果设置成直线型,最终的弹出或汇总点在下面的红色按钮中. 它的实现原理是设置动画的同时并利用动画中的插

[Android界面] 点击侧滑菜单中的选项怎么不让它显示主activity的界面

问题描述 [Android界面] 点击侧滑菜单中的选项怎么不让它显示主activity的界面 使用侧滑菜单SlidingMenu做菜单 .点击菜单的fragment选项会显示当前fragment界面,但是我做的时候怎么把fragment寄宿的主activity界面的内容也显示出来了.比如主界面有个textview 我点击fragment选项的时候这个textview也会出现在fragment界面上.怎么不让主界面的内容显示在fragment界面上,求解决办法 !!!!,先谢过!

android中使用了侧滑菜单,在侧滑菜单的布局中用gridview不会显示

问题描述 android中使用了侧滑菜单,在侧滑菜单的布局中用gridview不会显示 侧滑菜单中的布局文件如下,请各位大神指点一下,谢谢你们 <?xml version="1.0" encoding="utf-8"?> android:layout_width="match_parent" android:layout_height="match_parent" android:background="