利用开源SlidingMenu框架实现左右侧滑菜单的功能
- package com.loaderman.slidingmenudemo;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentPagerAdapter;
- import android.support.v4.view.ViewPager;
- import android.view.View;
- import android.view.Window;
- import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
- import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
- import java.util.ArrayList;
- import java.util.List;
- public class MainActivity extends SlidingFragmentActivity
- {
- private ViewPager mViewPager;
- private FragmentPagerAdapter mAdapter;
- private List<Fragment> mFragments = new ArrayList<Fragment>();
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- this.requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.activity_main);
- // 初始化SlideMenu
- initRightMenu();
- // 初始化ViewPager
- initViewPager();
- }
- private void initViewPager()
- {
- mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
- MainTab01 tab01 = new MainTab01();
- MainTab02 tab02 = new MainTab02();
- MainTab03 tab03 = new MainTab03();
- mFragments.add(tab01);
- mFragments.add(tab02);
- mFragments.add(tab03);
- /**
- * 初始化Adapter
- */
- mAdapter = new FragmentPagerAdapter(getSupportFragmentManager())
- {
- @Override
- public int getCount()
- {
- return mFragments.size();
- }
- @Override
- public Fragment getItem(int arg0)
- {
- return mFragments.get(arg0);
- }
- };
- mViewPager.setAdapter(mAdapter);
- }
- private void initRightMenu()
- {
- Fragment leftMenuFragment = new MenuLeftFragment();
- setBehindContentView(R.layout.left_menu_frame);
- getSupportFragmentManager().beginTransaction()
- .replace(R.id.id_left_menu_frame, leftMenuFragment).commit();
- SlidingMenu menu = getSlidingMenu();
- menu.setMode(SlidingMenu.LEFT_RIGHT);
- // 设置触摸屏幕的模式
- menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
- menu.setShadowWidthRes(R.dimen.shadow_width);
- menu.setShadowDrawable(R.drawable.shadow);
- // 设置滑动菜单视图的宽度
- menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
- // menu.setBehindWidth()
- // 设置渐入渐出效果的值
- menu.setFadeDegree(0.35f);
- // menu.setBehindScrollScale(1.0f);
- menu.setSecondaryShadowDrawable(R.drawable.shadow);
- //设置右边(二级)侧滑菜单
- menu.setSecondaryMenu(R.layout.right_menu_frame);
- Fragment rightMenuFragment = new MenuRightFragment();
- getSupportFragmentManager().beginTransaction()
- .replace(R.id.id_right_menu_frame, rightMenuFragment).commit();
- }
- public void showLeftMenu(View view)
- {
- getSlidingMenu().showMenu();
- }
- public void showRightMenu(View view)
- {
- getSlidingMenu().showSecondaryMenu();
- }
- }
- package com.loaderman.slidingmenudemo;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- public class MainTab01 extends Fragment
- {
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
- {
- return inflater.inflate(R.layout.main_tab_01, container, false);
- }
- }
- package com.loaderman.slidingmenudemo;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- public class MainTab02 extends Fragment
- {
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
- {
- View messageLayout = inflater.inflate(R.layout.main_tab_02, container, false);
- return messageLayout;
- }
- }
- package com.loaderman.slidingmenudemo;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- public class MainTab03 extends Fragment
- {
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
- {
- View newsLayout = inflater.inflate(R.layout.main_tab_03, container, false);
- return newsLayout;
- }
- }
- package com.loaderman.slidingmenudemo;
- 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.ListAdapter;
- import android.widget.ListView;
- import java.util.Arrays;
- import java.util.List;
- public class MenuLeftFragment extends Fragment
- {
- private View mView;
- private ListView mCategories;
- private List<String> mDatas = Arrays.asList("聊天", "发现", "通讯录", "朋友圈", "订阅号");
- private ListAdapter mAdapter;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState)
- {
- if (mView == null)
- {
- initView(inflater, container);
- }
- return mView;
- }
- private void initView(LayoutInflater inflater, ViewGroup container)
- {
- mView = inflater.inflate(R.layout.left_menu, container, false);
- mCategories = (ListView) mView
- .findViewById(R.id.id_listview_categories);
- mAdapter = new ArrayAdapter<String>(getActivity(),
- android.R.layout.simple_list_item_1, mDatas);
- mCategories.setAdapter(mAdapter);
- }
- }
- package com.loaderman.slidingmenudemo;
- import android.os.Bundle;
- import android.support.v4.app.Fragment;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- public class MenuRightFragment extends Fragment
- {
- private View mView;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState)
- {
- if(mView == null)
- {
- mView = inflater.inflate(R.layout.right_menu, container, false);
- }
- return mView ;
- }
- }
activity_main.xml
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <RelativeLayout
- android:layout_width="fill_parent"
- android:layout_height="45dp"
- android:background="@drawable/title_bar">
- <ImageButton
- android:id="@+id/id_iv_left"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_centerVertical="true"
- android:layout_marginLeft="3dp"
- android:background="@drawable/showright_selector"
- android:onClick="showLeftMenu"/>
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:gravity="center"
- android:text="微信"
- android:textColor="#fff"
- android:textSize="20sp"
- android:textStyle="bold"/>
- <ImageButton
- android:id="@+id/id_iv_right"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_centerVertical="true"
- android:layout_marginRight="3dp"
- android:background="@drawable/showleft_selector"
- android:onClick="showRightMenu"/>
- </RelativeLayout>
- <android.support.v4.view.ViewPager
- android:id="@+id/id_viewpager"
- android:layout_width="fill_parent"
- android:layout_height="0dp"
- android:layout_weight="1">
- </android.support.v4.view.ViewPager>
- </LinearLayout>
left_menu.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="45dp"
- android:background="@drawable/title_bar" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:gravity="center"
- android:text="功能"
- android:textColor="#fff"
- android:textSize="20sp"
- android:textStyle="bold" />
- </LinearLayout>
- <ListView
- android:id="@+id/id_listview_categories"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:textAlignment="center" />
- </LinearLayout>
left_menu_frame.xml
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/id_left_menu_frame"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
main_tab_01.xml main_tab_02.xml main_tab_03.xml 实现如下
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"- android:id="@+id/ly_main_weixin"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="#fcfcfc"
- android:orientation="vertical" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:gravity="center"
- android:text="this is first tab !"
- android:textColor="#000000"
- android:textSize="30sp"
- />
- </LinearLayout>
right_menu.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#eee"
- android:orientation="vertical" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="45dp"
- android:background="@drawable/title_bar" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:gravity="center"
- android:text="设置"
- android:textColor="#fff"
- android:textSize="20sp"
- android:textStyle="bold" />
- </LinearLayout>
- <ScrollView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="20dp"
- android:orientation="vertical" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_first_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="个人信息"
- android:textColor="#000"
- android:textSize="16sp" />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_nomal_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="二维码名片"
- android:textColor="#000"
- android:textSize="16sp" />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_nomal_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="腾讯微博"
- android:textColor="#000"
- android:textSize="16sp" />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_last_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="添加朋友"
- android:textColor="#000"
- android:textSize="16sp" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="20dp"
- android:orientation="vertical" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_first_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="我的帐号"
- android:textColor="#000"
- android:textSize="16sp" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="20dp"
- android:orientation="vertical" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/friends_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="聊天背景"
- android:textColor="#000"
- android:textSize="16sp" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="20dp"
- android:orientation="vertical" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_first_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="通用"
- android:textColor="#000"
- android:textSize="16sp" />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_nomal_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="插件"
- android:textColor="#000"
- android:textSize="16sp" />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_nomal_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="黑名单"
- android:textColor="#000"
- android:textSize="16sp" />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_nomal_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="隐私"
- android:textColor="#000"
- android:textSize="16sp" />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_nomal_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="系统通知"
- android:textColor="#000"
- android:textSize="16sp" />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_last_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="流量同级"
- android:textColor="#000"
- android:textSize="16sp" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="20dp"
- android:orientation="vertical" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_first_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="帮助与反馈"
- android:textColor="#000"
- android:textSize="16sp" />
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/settings_last_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="关于微信"
- android:textColor="#000"
- android:textSize="16sp" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="20dp"
- android:orientation="vertical" >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:background="@drawable/friends_item"
- android:clickable="true"
- android:drawableRight="@drawable/mm_submenu_normal"
- android:gravity="center_vertical"
- android:paddingLeft="25dp"
- android:text="清空聊天记录"
- android:textColor="#000"
- android:textSize="16sp" />
- </LinearLayout>
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="20dp"
- android:layout_marginTop="20dp"
- android:orientation="vertical" >
- <Button
- android:layout_width="fill_parent"
- android:layout_height="40dp"
- android:layout_marginLeft="20sp"
- android:layout_marginRight="20sp"
- android:background="@drawable/exit_btn"
- android:gravity="center"
- android:text="退出登录"
- android:textColor="#fff"
- android:textSize="16sp" />
- </LinearLayout>
- </LinearLayout>
- </ScrollView>
- </LinearLayout>
right_menu_frame.xml
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/id_right_menu_frame"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
shadow,xml
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android" >
- <gradient
- android:endColor="#ff444444"
- android:startColor="#00000000" />
- </shape>
效果图:
利用开源SlidingMenu框架实现左右侧滑菜单的功能的更多相关文章
- Android开发——使用高级的RecyclerView实现侧滑菜单删除功能(SwipeRecyclerView)
使用之前,先简单介绍一下这个SwipeRecyclerView,这是严大(严振杰)基于RecyclerView的进行修改和封装的高级RecyclerView,其可以实现像QQ聊天界面的侧滑删除菜单,和 ...
- SlidingMenu 侧滑菜单的用法
很多APP都有侧滑菜单的功能,部分APP左右都是侧滑菜单~SlidingMenu 这个开源项目可以很好帮助我们实现侧滑功能,将侧滑菜单引入项目的方式很多中,先通过例子介绍各种引入方式,然后给大家展示个 ...
- Android 侧滑菜单的简单实现(SlidingMenu)
在我还没有学习Android的时候就用过侧滑菜单的APP,当时第一个感觉是:哇塞,这效果不错!当然,现在自己都已经学Android了,这效果当然也要做出来啊~ SlidingMenu是一种比较新的设置 ...
- Android笔记(五十二) 侧滑菜单SlidingMenu
SlidingMenu是一个优秀的开源项目,可以实现侧滑菜单,简单介绍一下这SlidingMenu的使用: 常用属性和方法: setTouchModeAbove(int i )是否可以通过滑动手势打开 ...
- Android侧滑菜单和轮播图之滑动冲突
接手一个项目,有一个问题需要修改:轮播图不能手动滑动,手动滑动轮播图只会触发侧滑菜单. 猜测:viewpager控件(轮播图)的触摸事件被SlidingMenu控件(侧滑菜单,非第三方项目,乃是上个开 ...
- Android 高大上的侧滑菜单DrawerLayout,解决了不能全屏滑动的问题
DrawerLayout预览 DrawerLayout主要功能就是 实现侧滑菜单效果的功能,并且可以通过增加一些设置来实现高大上的效果,那么就请看动态图: 注意左上角那个图标,有木有很好玩,哈哈. ...
- 安卓开发笔记——关于开源项目SlidingMenu的使用介绍(仿QQ5.0侧滑菜单)
记得去年年末的时候写过这个侧滑效果,当时是利用自定义HorizontalScrollView来实现的,效果如下: 有兴趣的朋友可以看看这篇文件<安卓开发笔记——自定义HorizontalScro ...
- 开源侧滑菜单SlidingMenu主要方法介绍
SlidingMenu是一个很好使用的侧滑菜单开源项目,它的表现形式类似于DrawerLayout和SlidingDrawer,具体效果如下图所示,左侧为侧滑Menu菜单,右侧黑色部分为内容显示视图C ...
- 鸿蒙开源第三方组件——SlidingMenu_ohos侧滑菜单组件
目录: 1.前言 2.背景 3.效果展示 4.Sample解析 5.Library解析 6.<鸿蒙开源第三方组件>文章合集 前言 基于安卓平台的SlidingMenu侧滑菜单组件(http ...
随机推荐
- Vivado添加sublime text编辑器
我们当用vivado会发现文本编辑器有点鸡肋,没有自动的缩进的功能,所以我想用sublime来进行文本的编辑,下面就是绑定的一些方法(但是呢其实吧,虽然可以绑定却不能实时的报错,,,我感觉我还是老老实 ...
- c++ 简单的动态银河星空绘制(类应用)
话不多说直接贴代码: #include <graphics.h> #include <time.h> #include <conio.h> #define MAXS ...
- 并查集+时光倒流 || [JSOI2008]星球大战starwar || BZOJ 1015 || Luogu P1197
题面:P1197 [JSOI2008]星球大战 题解: 坑点有点多啊,加上我本来就有点头昏脑涨,一道水题写了一万年.. 并查集不支持拆开(但是可以撤销合并),只支持合并.所以把询问离线了,从最后状态到 ...
- 关于@wraps(fn)
- 如何卸载Win10 RS3上预装的office2016
原因分析: 由于微软在Win10 1709(RS3版本)上改变了office 2016家庭和学生版的预装方式(预装office 2016改为Windows Store应用商店的即点即用程序),无法使用 ...
- Android 腾讯bugly Tinker 热修复
Bugly热更新是腾讯推出的热更新框架,热更新是指无需到应用市场重新下载安装app,只需要在app内下载补丁包即可实现app的更新,主要用于app的bug修复或者少量改动. 大家在使用app(特别是游 ...
- Acwing-96-奇怪的汉诺塔(递推)
链接: https://www.acwing.com/problem/content/description/98/ 题意: 汉诺塔问题,条件如下: 1.这里有A.B.C和D四座塔. 2.这里有n个圆 ...
- JPA的常用Annotation
http://www.blogjava.net/zJun/archive/2007/01/24/95747.html @transient 忽略该方法 一. @Entity:通过@Entity注解将一 ...
- centos7安装android studio遇到Unable to run mksdcard sdk tool
centos系统为最小化安装,所以安装新软件时缺少许多依赖包,Android Studio下载的mksdcard是32位的,而系统是64位的,所以需要安装支持32位软件的依赖包. sudo yum i ...
- JS中对小数取整的函数,向上(下),四舍五入取整
1.丢弃小数部分,保留整数部分 js:parseInt(7/2) 2.向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 3,四舍五入. js: Math.round(7/2) 4, ...