第二次作业——Service、Listview与ACtivity参数传递

本文介绍了如何使用ListView展示音乐信息,通过Service实现音乐播放,并详细讲解了布局文件、按钮选择器、ListView条目设计、Service配置以及Activity间的数据传递。文章还涉及点击列表项播放音乐、跳转到歌词界面等功能实现。
摘要由CSDN通过智能技术生成

转载请注明出处:http://blog.csdn.net/qq347198688/article/details/52914407
本文出自【何嘉龙的博客

前言

在实战之前呢,我想跟大家唠唠几句,本来在老师刚布置下来答案的时候,我就想给大家把作业完成,然后分享出来。但是,实在是有点脱不开身,最近有点忙,加上大三的课程跟实验也多。今天好不容易空了半天时间出来,我就立马打开我的博客,准备写一篇分享第二次作业的文章。嘿嘿,其中,让我看到一件很开心的事情,那就是我第一次作业的博客访问量突破两百了,成为我博客里面访问量暂时最高的一篇(ps:虽然很少),而且还有一位同学评论了,非常感谢。我想这也是对于我最大的支持与鼓励吧,也欢迎大家多指责我博客的不足的地方。

作业要求:

  1. 如下图列表显示三首歌曲的歌名、歌手名和封面
  2. 点击列表项使用service播放对应歌曲
  3. 点击列表项跳转至另一Activity显示对应歌词
  4. 可用控制按钮控制播放过程(播放、暂停、停止)
  5. 调试并运行程序,并在作业平台提交该项目工程目录的压缩包和运行效果截图。

注意事项:

  1. Application name统一命名为job2,Company Domain统一命名为“姓名全拼.whut.edu”(如qinposhi.whut.edu)
  2. 相关资源(封面图片、按钮图标、歌曲)直接放到项目的资源目录下,歌词可直接放到源代码中。(不限使用我提供的资源,大家可自行选择资源)
  3. 项目工程目录的压缩包统一命名为“学号姓名作业1.rar”(如100000000_秦珀石_作业1.rar).
  4. 作业的具体要求和相关资源可在教学资源中的作业要求目录中去查找(界面原型需安装mockplus,安装包也在目录中)

作业实战:

首先,让我们新建一个工程job2,公司域名(company domain)为“姓名全拼.whut.edu”。然后看到作业要求,我们看到主页面:

主页面

首先看到最后一行三个按钮,这三个按钮水平排列成一行,而且三个按钮均分了最后一行,所以这里我们考虑用LinearLayout的水平排列。再看到上面三行的样式是一样的,所以我们考虑用ListView/RecylerView来写,我们这里用ListView实现更加简单,所以决定采用ListView。因此我们的布局文件activity_main.xml文件可以这样写:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/list_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="#000"
        android:dividerHeight="1dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:gravity="center_horizontal"
        android:orientation='horizontal'>

        <ImageButton
            android:id="@+id/play"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:background="@drawable/btn_selector"
            android:src="@drawable/play" />

        <ImageButton
            android:id="@+id/pause"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:background="@drawable/btn_selector"
            android:src="@drawable/pause" />

        <ImageButton
            android:id="@+id/stop"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:background="@drawable/btn_selector"
            android:src="@drawable/stop" />
    </LinearLayout>
</LinearLayout>

这里我们还需要说几个地方,ListView的分割线的默认样式是灰色的,不太显眼,所以我们把分割线的颜色改为黑色,也就是加上android:divider="#000"代码,但是这个时候如果我们已经写好了ListView的相关代码,运行程序可以发现,咦,分割线怎么没了?是这样的,如果我们不加分割线的相关代码,ListView就会采用默认的分割线,有颜色还有高度。但是如果我们自己加了分割线,ListView就会使用我们的分割线,我们没有指定android:dividerHeight="1dp",没有高度,那分割线肯定就看不到了。另外,我们为了让三个按钮平分一行,需要用到android:layout_weight,layout_weight是权重,我们需要把宽度等分,所以,先要把宽度设为android:layout_width="0dp",另外android:layout_weight="1",这样三个按钮在宽度上就等分了。当然,我们需要先把老师给的三个按钮的图标放在drawable目录下。最后一个要说的地方就是,眼尖的同学可能看到了android:background="@drawable/btn_selector"这行代码。我们需要在drawable目录下,新建一个Drawable resource file,名字为btn_selector,父元素Root Element为selector,顾名思义,这是一个按钮选择器,目的是为了让我们点击按钮的时候有点击效果。btn_selector.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/colorAccent"/>
</selector>

写完了三个按钮,我们就要重新看到ListView的条目了,每个条目里面包括一个图片,歌曲的名字,歌手的名字。我们在layout目录下新建一个Layout resource file,名字为icon_list,里面的代码如下:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值