上一篇文章总体规划了这个项目的情况,今天讲讲实现电台列表。今天其实主要想讲解的是SlidingMenu,也就是我们平时说的侧滑栏,现在很多应用都有用这种UI效果。SlidingMenu侧滑栏功能实现的方式很多,可以自己使用ViewGroup实现也可以自己绘图实现。我这里借用了一个开源项目SlidingMenu,因为我这里不是研究如何实现SlidingMenu,而且为了快速实现这种功能,所以就直接使用这个开源项目的成果。

(PS:新建的QQ群,有兴趣可以加入一起讨论:Android群:322599434)

  

上面就是侧滑栏的效果,指定一边滑动,就可以拉出一个新的界面出来。

1、工程里引用SlidingMenu

  首先我们说说这个开源工程如何使用,因为SlidingMenu是以工程库的形式使用,因此我们只需要在我们的工程里面应用这个工程就行。下面说说具体步骤:(这是给初学者看的哈,有经验的跳过)

  我们添加SlidingMenu后,可以查看该工程属性,其中有一个Library的属性,说明这是一个Library工程。然后只需要在我们使用的工程里添加应用这个外部库就可以。

这里添加外部Library,因为我还引用了另外一个解码库Vitamio,所以会有两个外部库。

2、初始化SlidingMenu

//Edited by mythou
//http://www.cnblogs.com/mythou/
  private void initChannelMenu()
{
     //创建SlidingMenu对象
mChannelMenu = new SlidingMenu(this);
     //设置侧滑栏菜单位置,这里在左边。拉动菜单时,会从左边弹出
mChannelMenu.setMode(SlidingMenu.LEFT);
     //设置触摸的范围,这里设置全屏
mChannelMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
     //设置阴影的宽度,查看上面第二张效果图,靠右边的位置,有一个阴影过渡。就是这个东西
mChannelMenu.setShadowWidthRes(R.dimen.shadow_width);
     //这里是阴影效果,可以设置图片或者一个颜色过渡
mChannelMenu.setShadowDrawable(R.drawable.shadow);
     //设置后面间距,侧滑栏和原来界面间距
mChannelMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
     //边框的角度,这里指边界地方
mChannelMenu.setFadeDegree(0.35f);
     //把侧滑栏关联到当前的Activity
mChannelMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
     //侧滑栏的布局文件
mChannelMenu.setMenu(R.layout.channel_slide_menu);
}

  上面给出了SlidingMenu的详细初始化配置,我们使用的时候可以根据需要的实际效果配置,达到我们需要的效果。SlidingMenu这个开源工程接口实现很好,可以实现很复杂的配置,同时使用的过程也十分简单,如果你只是单纯需要这种功能,借用这个开源项目是不错的选择。如果需要自己实现,也可以借鉴一下这工程。

3、弹出和收起SlidingMenu

  一帮情况下,只有设置了上面的mChannelMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN) ,我们只要在屏幕上面向右滑动就可以把SlidingMenu拉出来,不过有时候我们也需要实现点击某个按钮就可以把它拉出来,就像我们上面的“电台列表”按钮,点击一下会自动弹出SlidingMenu处理,要实现这功能很简单,只要调动SlidingMenu一个借口即可。

//Edited by mythou
//http://www.cnblogs.com/mythou/
mOpenMenuButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
    //调用SlidingMenu的显示菜单接口
mChannelMenu.showMenu();
}
});

上面通过调用showMenu()即可显示菜单。隐藏SlidingMenu同样只需要调用一个接口


//Edited by mythou
//http://www.cnblogs.com/mythou/
@Override
public void onBackPressed()
{
if (mChannelMenu.isMenuShowing())
{
     //隐藏SlidingMenu,这里的Content就是我们的主Activity。
mChannelMenu.showContent();
}
else
{
super.onBackPressed();
}
}

我这里放在了返回键的处理,按下返回键的时候,自动收起SlidingMenu菜单。

4、总结

  SlidingMenu是一个在Git上很火也很实用的项目,通过使用该项目可以快速在我们的项目中使用侧滑栏功能,只要按照我上面配置在新工程引用SlidingMenu就可以。另外补充一点,SlidingMenu提供了一个例子,不过需要用到另外一个开源工程ActionBarSherlock ,如果要配置该例子,注意引用这工程。不过我配置的时候遇到不少问题,建议大家按照我上面方法直接新建一个工程,先看看SlidingMenu的使用和效果。

SlidingMenu的Git项目托管地址:https://github.com/jfeinstein10/SlidingMenu

系列文章:

Android 开发自己的网络收音机1——功能要求及设计方案

Edited by mythou

原创博文,转载请标明出处:http://www.cnblogs.com/mythou/p/3205100.html 

Android 开发自己的网络收音机2——电台列表(SlidingMenu侧滑栏)的更多相关文章

  1. Android 开发自己的网络收音机3——电台分类(ExpandableListView)

    上一篇文章说了使用SlidingMenu开源项目实现侧滑栏,今天主要是讲解多级列表ExpandableListView的使用,以及如何使用它实现电台分类管理.ExpandableListView是An ...

  2. Android 开发自己的网络收音机4——读取XML文件的电台数据

    国内外的电台数据很多,起码有好几百,所以把这些数据都写到代码里面是不实际的.只能写成一个数据文件,程序启动的时候再去加载.保存这些简单数据,我们肯定会优先使用XML文件,今天讲讲如何读取XML里面的数 ...

  3. Android 开发自己的网络收音机1——功能要求及设计方案

    最近打算利用业余时间,编写一个Android的网络收音机.因为我自己偶尔也喜欢听听广播,所以打算用业余时间编写一个网络版收音机.说起收音机,其实在工作中已经编写过一个,不过那个收音机是需要硬件支持,也 ...

  4. 【Android进阶】使用Andbase快速开发框架实现常见侧滑栏和滑动标签页组合效果

    最近闲来无事,在网上寻找源代码看,突然发现了一个国内技术牛人开发的快速开发框架Andbase,花了一天时间研究了下源码和怎么使用,现将开发常见的侧滑栏和滑动标签页组合效果的使用介绍个大家,希望可以减少 ...

  5. Android开发实战之拥有Material Design风格的侧滑布局

    在实现开发要求中,有需要会使用抽屉式布局,类似于QQ5.0的侧滑菜单,实现的方式有很多种,可以自定义控件,也可以使用第三方开源库. 同样的谷歌也推出了自己的侧滑组件——DrawLayout,使用方式也 ...

  6. android 开发 修改系统背景(状态栏颜色、导航栏颜色、标题栏颜色等等)

    1.打开values下的styles.xml 发现有以下代码: <resources> <!-- Base application theme. --> <style n ...

  7. 【转】Android开发笔记(序)写在前面的目录

    原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经 ...

  8. Android开发学习之LauncherActivity开发启动的列表

    Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果:   建立主Activity:OtherActivity.java [jav ...

  9. Android开发调试常用命令列表

    Android开发调试常用命令列表 adb命令 am am start -n com.iflytek.autofly.account/.ui.MainActivity am start -n com. ...

随机推荐

  1. excel文档中数据导入sql server注意事项

    进来经常需要对一些基础数据进行更新,而业务方提供的数据源往往都是excel,所以经常需要将excel中数据导入到 数据库临时表,然后再进行处理. 在导入过程中,发现有些数据比如手机号码,如果默认导入, ...

  2. spark.mllib源代码阅读-优化算法1-Gradient

    Spark中定义的损失函数及梯度,在看源代码之前,先回想一下机器学习中定义了哪些损失函数,毕竟梯度求解是为优化求解损失函数服务的. 监督学习问题是在如果空间F中选取模型f作为决策函数.对于给定的输入X ...

  3. TCP网络编程杂谈

    作为一名IT工程师,网络通信编程相信都会接触到,比如Web开发的HTTP库,Java中的Netty,或者C/C++中的Libevent,Libev等第三方通信库,甚至是直接使用Socket API,但 ...

  4. 比较@Resource、@Autowired

    @Resource @Resource默认按byName自动注入.既不指定name属性,也不指定type属性,则自动按byName方式进行查找.如果没有找到符合的bean,则回退为一个原始类型进行进行 ...

  5. Package CJK Error: Invalid character code. 问题解决方法--xelatex和pdflatex编译的转换

    Package CJK Error: Invalid character code. 问题解决方法--xelatex和pdflatex编译的转换 解决方法:添加格式说明信息 将下面语句: \docum ...

  6. SpringMVC之RequestContextHolder分析

    最近遇到的问题是在service获取request和response,正常来说在service层是没有request的,然而直接从controlller传过来的话解决方法太粗暴,后来发现了Spring ...

  7. django -- 对模式进行调式(pay with the api)

    在django中如果想对models进行调试.不用每次都要runserver 在web界面上点点点.django自己带了字符界面的调试功能 一.完成app的注册.与models的定义: 注册app: ...

  8. 基于SSD固态硬盘的数据库性能优化

    基于SSD固态硬盘的数据库性能优化 2010-11-08 00:0051cto佚名   关键字:固态硬盘 数据库管理 SSD 企业软件热点文章 Java内存结构与模型结构分析 Oracle触发器的语法 ...

  9. git android.google 源码:Unknown SSL protocol error in connection to code.google.com:443

    想要提取android的源码.就必须要使用git.下面是本人安装的过程发生的问题: 1.1安装git.win的命令行的客户端(相当与svn的乌龟那样使用).http://git-scm.com/dow ...

  10. 【Unity】10.4 类人动画角色的控制

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 导入角色网格和动画及设置 Avatar 之后,就可以准备开始在游戏中使用它们了.以下部分涵盖 Mecanim 提供的.用 ...