eoe android客户端源码剖析(二)侧滑菜单SlidingMenu

2024-01-15 02:48

本文主要是介绍eoe android客户端源码剖析(二)侧滑菜单SlidingMenu,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

android上最好用的侧滑菜单当属SlidingMenu了(除了SlidingMenu之外还有一个很简单同时功能不强的slidelayout),eoe的android客户端也是采用了SlidingMenu,并且每一个activity都具备侧滑菜单,保证了界面的统一性。

来看看eoe客户端的activity继承图:

可以看出每个Activity的超类都是BaseSlidingFragmentActivity,并且具备SlidingActivityBase接口。BaseSlidingFragmentActivity主要初始化一个SlidingActivityHelper,并且实现SlidingActivityBase中的setBehindContentView等等接口。

在看BaseSlidingFragmentActivity之前,先看看SlidingMenu的两种用法:

一、使用SlidingActivityHelper并且实现SlidingActivityBase接口

这是配置起来较为复杂,但是后期用起来非常简单的一种方式,也是eoe客户端采用的方式。在此方式下,项目所有的Activity必需继承自FragmentActivity才行。

Activity建立一个私有成员private SlidingActivityHelper mHelper;然后在onCreate中初始化此helper:

1
2
mHelper =  new  SlidingActivityHelper( this );
         mHelper.onCreate(savedInstanceState);

然后实现SlidingActivityBase接口,举个例子:

1
2
3
4
5
6
  /* (non-Javadoc)
      * @see com.slidingmenu.lib.app.SlidingActivityBase#toggle()
      */
     public  void  toggle() {
         mHelper.toggle();
     }

也就是对mHelper的简单包装。

同时还可以复写findViewById来找到侧滑菜单里的控件。

1
2
3
4
5
6
7
8
9
10
     /* (non-Javadoc)
      * @see android.app.Activity#findViewById(int)
      */
     @Override
     public  View findViewById( int  id) {
         View v =  super .findViewById(id);
         if  (v !=  null )
             return  v;
         return  mHelper.findViewById(id);
     }

先查找contentView里有没有,没有的话就去侧滑菜单里找。

最后必需执行的一步就是指定侧滑菜单的layout:

1
setBehindContentView(R.layout.behind_slidingmenu);

二、直接新建SlidingMenu并且attach到Activity

这种方法配置起来非常简单,而且不需要继承自FragmentActivity。只需要在onCreate里:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public  void  onCreate(Bundle savedInstanceState)
     {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.above_slidingmenu);
         SlidingMenu menu =  new  SlidingMenu( this );
         menu.setMode(SlidingMenu.LEFT);
         menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
         menu.setShadowWidthRes(R.dimen.shadow_width);
         menu.setShadowDrawable(R.drawable.slidingmenu_shadow);
         menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
         menu.setFadeDegree( 0 .35f);
         menu.attachToActivity( this , SlidingMenu.SLIDING_CONTENT);
         menu.setMenu(R.layout.behind_slidingmenu);
         }

此时如果想要操作侧滑菜单里的list等控件,就必须在menu这个viewGroup里查找了:

1
ListView listView = (ListView) menu.findViewById(R.id.behind_list_show);

抽取出来的侧滑效果:


转载自:码农场 » eoe android客户端源码剖析(二)侧滑菜单SlidingMenu

这篇关于eoe android客户端源码剖析(二)侧滑菜单SlidingMenu的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/607392

相关文章

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。