Android 音乐播放器的实现(二)界面的实现

Android实训2_音乐播放器界面制作_相对布局 2.在RelativeLayout中的子控件具备一些属性,用于指定子控件的位置,这些子控件的属性如下表所示。设置当前控件的上边界与某控件的上边界对齐。设置当前控件的下边界与某控件的下边界对齐。设置当前控件的左边界与某控件的左边界对齐。设置当前控件的右边界与某控件的右边界对齐。设置当前控件位于父控件的水平居中位置。设置当前控件是否与父控件顶端对齐。设置当前控件是否与父控件底端对齐。设置当前控件是否与父控件左对齐。设置当前控件是否与父控件右对齐。【实训素材优快云资源链接】设置当前控件位于某控件上方。 阅读详情

写程序的过程中,想法总会不断地变,有时候会很纠结,到底做哪种效果好,怎么做好呢?

就比如这个音乐播放器,我原来的想法是把列表页面跟歌词页面放在同一个Activity中的两个Fragment,然后通过左右滑动来进行页面的切换。

但是看了酷狗的播放器,它是在启动页面点击了左下角的按钮,就会把歌词页面从右下角斜切上来,我觉得也挺帅的呀,又想做这个效果了。

不管怎么样,先做出一个来再说吧。

下面先看一下效果动态图,机器有点差,开个模拟器真是慢到死。

做得比较匆忙,其实还是有不少Bug的,还有一些功能,比如歌词也还没实现,请各位多包涵。

效果图:

下面我们分几步来讲:

界面:

目前只有两个界面,列表界面MainActivity和歌词DetailActivity。
列表界面也分两部分,上面是一个ListView,下面是一个RelativeLayout,里面放了一个按钮(去歌词界面),一个进度条,一个TextView去显示歌名,两个控制按钮,播放和前进(酷狗就是只有这两个按钮,有点好奇设计的理念是什么,为什么不加前一首?),这个看布局的xml就一目了然了。
\res\layout\activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/lvSongs"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="8"
        android:cacheColorHint="#00000000" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:background="#BBBBBB"
        android:layout_height="0dp"
        android:layout_weight="1" >

        <Button
            android:id="@+id/btnDetail"
            android:layout_width="48dip"
            android:layout_height="48dip"
            android:layout_margin="0dip"
            android:background="@drawable/music_app"
            android:layout_alignParentBottom="true"
            android:layout_alignParentTop="true"/>

        <SeekBar
            android:id="@+id/pbDuration"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="wrap_content"
            android:layout_marginTop="3dip"
            android:layout_height="10dip"
            android:layout_marginBottom="3dip"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/btnDetail"                       
            android:maxHeight="1dip"
            android:minHeight="1dip"
            android:progressDrawable="@drawable/progress_style"
            android:thumbOffset="0dip"            
            android:thumb="@drawable/seekbar_thumb"/>

        <TextView
            android:id="@+id/tvCurrentMusic"
            android:layout_width="190dp"
            android:layout_height="32dip"
            android:layout_alignBaseline="@+id/btnNext"
            android:layout_toRightOf="@+id/btnDetail"
            android:gravity="left|center_vertical"
            android:paddingLeft="5dip"
            android:paddingRight="5dip" />

        <Button
            android:id="@+id/btnStartStop"
            android:layout_width="32dip"
            android:layout_height="32dip"
            android:layout_alignBaseline="@+id/btnNext"
            android:layout_below="@+id/pbDuration"
            android:layout_toLeftOf="@+id/btnNext"
            android:background="@drawable/play"
            android:layout_marginRight="5dip"
          />

        <Button
            android:id="@+id/btnNext"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/pbDuration"
            android:layout_marginRight="20dip"
            android:background="@drawable/forward" />

    </RelativeLayout>

</LinearLayout>
其中进度条是用自定义的风格的(也是在优快云上找的,还没去具体了解,到时了解了再讲一下)。
下面是DetailActivity的布局xml.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res/com.example.nature"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:background="#00EEEE"
        android:gravity="center_vertical"
        android:paddingLeft="5dip"
        android:paddingRight="5dip" />

    <TextView
        android:id="@+id/tvLyric"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="9"
        android:gravity="center_vertical"
        android:text="To Continue...." />

    <LinearLayout
        android:id="@+id/llProgress"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/tvTimeElapsed"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|center_vertical"
            android:layout_weight="1"
            android:text="00:00" />

        <SeekBar
            android:id="@+id/pbDuration"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="0dip"
            android:layout_height="10dip"
            android:layout_gravity="center_horizontal|center_vertical"
            android:layout_weight="6"
            android:maxHeight="1dip"
            android:minHeight="1dip"
            android:progressDrawable="@drawable/progress_style"
   
Android开发----音乐播放器(界面设计) 转眼也沦为“大四狗”的行列当中去,本来打算在暑假的时候找一个实习,结果学校临时安排了“暑期实训”    原本计划好的安排全部被打乱了,哎~~~也只能跟着学校的脚步“摩擦摩擦”了    暑期实训我选择的Android开发,当时选他的初衷很简单:    1.看内容安排的时候,是安排写一个游戏引擎以及文档的书写规范,看着内容很高大上的感觉...有木有?!?!?!(后来真正开始上课的时候,只能呵呵. 阅读详情

相关推荐

Android初级,实现网易云音乐歌曲列表界面效果,播放界面效果,ListView,ViewPager方法详解

初学Android初级,第一篇博客文章,如有错误,还望批评指正!本文主要内容以网易云音乐歌曲列表界面效果代码,播放音乐界面效果代码为主,并将ListView和ViewPager作为实现界面滑动功能的适配器控件进行穿插讲解。读完本文你将了解到: 如何创建布局文件(线性布局及相对布局搭配使用) 如何使用ListView和ViewPager进行界面滑动和切换(Fragment) 利用缓存原理给布局视图控件

wjw187的博客 1万+

Android Studio音乐播放器

简单的音乐播放器,因为之前在上课的时候做了一半回去用自己电脑做,Android的版本不一样导致了音乐播放不出来,花了一下午时间调试,今天拿出来复习了一遍。分享一些心得 音乐播放器主要通过service后台服务和线程实现的。 服务是一个后台运行的组件,执行长时间运行且不需要用户交互的任务。即使应用被销毁也依然可以工作。 音乐播放器主要实现是由starservice实现的,首先先设置界面布局,打造一个...

Genus_的博客 8176

Android开发 : 音乐播放器的实现

一、前言: 第一次做安卓的个人项目,还是比较轻松的,将平时学的知识用到点子上就好容易,遇到自己想实现的而且还不会的就上网自己查,或者去官网的安卓开发者手册读老英文,这一块是最耗实践的,我在项目中在添加随机播放,加入歌曲时间,用什么数据结构存储歌曲信息等地方花了很大精力去学习,毕竟网上的东西查到10篇有3篇是符合的,就一篇详细而且有用的,所以遇到自己不会的时候效率还是蛮低的。 二、功能介绍: 音乐播放器可以将手机SD卡中的音乐读取后加入到音乐播放器中,列出列表共听者欣赏,在音...

Aquarius_1的博客 3617

Android简易音乐播放器之界面实现(第一篇)

刚踏入大四,因为找实习,突然想做个简易的音乐播放器练习一下。为了记录自己的开发过程,于是写成了博客。由于本人是一枚学生,可能在开发过程中有很多不规范的地方以及不足,希望大家提出并交流,共同进步。 第一步:实现界面 在最初的时候想要实现怎样的界面才能好看些,参考了许多,最后准备模仿网易云音乐实现自己的界面。因为考虑到这个播放器功能简单,所以也没有去做类似于网易云音乐那样华丽的界面,可以滑动、切换

yx511024的博客 7686

java毕设安卓基于Android的音乐播放器设计与实现(开题+源码)

在音乐分类功能方面,将采用先进的分类算法,对音乐库中的歌曲进行智能分类,方便用户快速找到自己喜欢的音乐类型。本研究的意义在于通过设计并实现一款基于Android的音乐播放器,不仅能够为用户提供一个高效、便捷的音乐播放平台,还能够推动Android应用开发技术的发展。同时,注重用户界面的设计,采用简洁明了、操作便捷的界面风格,提升用户的使用体验。综上所述,本研究旨在通过设计并实现一款基于Android的音乐播放器,推动Android应用开发技术的发展,促进移动音乐产业的创新与发展。

铁川毕设程序 1807

手把手教你用支付宝密钥工具生成RSA2密钥对(含Windows/Mac操作截图)

本文详细介绍了如何使用支付宝密钥工具生成RSA2密钥对,包括Windows和Mac平台的操作步骤与截图。从工具下载、安装到密钥生成、配置支付宝平台,再到开发环境集成实战,手把手教你完成支付宝支付接口对接。特别强调密钥安全管理和最佳实践,帮助开发者避免常见安全隐患。

mongodb5scout的博客 257

动态库加载失败终极指南:从libbz2.so.1错误看Linux依赖管理本质

本文以经典的libbz2.so.1加载错误为例,深入剖析Linux动态链接库管理的核心机制。文章不仅提供从ldd检查、符号链接创建到LD_LIBRARY_PATH设置等实战解决方案,更系统性地讲解了动态链接器的寻库路径、版本管理及依赖问题预防策略,帮助开发者从根本上理解和掌握Linux依赖管理本质。

weixin_29212429的博客 447

电子发票二维码背后的秘密:10分钟看懂校验码、加密字符含义与防伪设计

本文深入解析电子发票二维码的结构与防伪设计,揭示校验码和加密字符的生成原理及验证方法。通过实际案例和技术细节,帮助财务人员理解电子发票的安全机制,提升防伪识别能力,确保税务合规。

weixin_29248611的博客 530

MicroPython跨平台移植实战:从源码解析到STM32+FreeRTOS部署

本文详细解析了MicroPython的跨平台移植实战,重点介绍了如何将其从源码开始,成功部署到STM32微控制器并运行于FreeRTOS实时操作系统。内容涵盖源码结构解析、编译环境搭建、内存管理协调、FreeRTOS任务集成、数学库(math)启用与优化,以及自定义模块开发等核心步骤,为开发者提供了一套完整的、可操作的嵌入式Python移植方案。

vodka的博客 1014

深入瑞芯微SDK:手把手解析Uboot、Kernel到Rootfs的镜像生成与烧录

本文深入解析瑞芯微SDK中从Uboot、Kernel到Rootfs的镜像生成与烧录全流程,揭示编译背后的技术细节。通过详细分析SDK架构、镜像生成流水线、分区表定制、Rootfs构建及烧录科学,帮助开发者从会编译进阶到懂原理,掌握系统级开发的关键技术。

weixin_29193359的博客 273

第 13 章:Spring AI Alibaba MCP 与 Nacos3 — 企业级MCP服务

理解Spring AI Alibaba 框架下的MCP服务与Nacos注册中心整合的必要性,学会Spring AI Alibaba-基于Nacos的MCP实现方法

paopao_wu的专栏 788

【GlobalMapper精品教程】038:模拟水位上升(洪水淹没分析)案例教程

基于数字高程模型 ( DEM )格网模型,实现给定水深情况下洪水淹没区的计算模型,讨论洪水淹没演进过程可视化实现的关键技术,以三维可视化方式,动态而形象地模拟在指定洪水水位下的洪水淹没演进过程。

智慧空间实验室 2884

深度学习实战103-基于KDD Cup 99数据集的搭建神经网络的检测系统(NIDS),通过对网络流量数据进行分析,提供完整代码

接下来,我们定义一个全连接神经网络模型。return x# 创建数据集和数据加载器# 初始化模型通过以上步骤,我们实现了一个基于PyTorch的简单网络入侵检测系统。这个系统使用KDD Cup 99数据集进行训练和评估。实际应用中,您可以根据需求调整模型结构、超参数以及数据预处理方法。希望对大家有所帮助!如果有任何问题或需要进一步的解释,请随时咨询。

微学AI的博客 1582

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: Android 音乐播放器的实现(一)自定义按钮的实现
下一篇: Android 音乐播放器的实现(三)Service的实现
linmiansheng
博客等级 码龄20年 507粉丝 111原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值