学习Android已经一段时间了打算做一款播放器来练练手。下面的效果图是开发婧婧音乐第一阶段的效果图:

一:1.0阶段可以满足基本的功能:

    1.自动获取SD卡的音乐文件,并以ListView的形式进行了显示   

    2.单击ListView的Item能够播放音乐    

   3.可以实现后台音乐播放     

   4.暂停,播放,上一曲,下一曲的播放

二.  在项目中用到了以下知识点:
  1.ListView的优化,BaseAdapter的优化
  2.UI的布局与设计
  3.SD卡的音乐读取
  4.Cursor的遍历,注意Cursor默认是下标-1开始的
  5.contentProvider的使用
  6.Service的使用
  7.Service与Activity的通信
  8.项目组织结构的使用:建立项目时一开始就建立了若干个项目可能需要的包把框架搭建好。

三.项目的组织结构:

以上分别对应的是:活动包,适配器包,实体包,服务包,和工具包

因为需要后台播放所以创建一个MusicPlayerService的类来提供相关的播放方法,并在主活动中调用。

DataHelper封装了变量SD卡音乐的静态方法。

四.项目的布局结构

  

  activity_welcome:是一张欢迎界面的布局,点击应用就像微信一样先有一张引导界面

  bottom代表:主布局下面的布局,这样做可以提高布局 的复用率。

  top与bottom相同

  item代表ListView的布局

  musicplayer_activity:播放界面主布局。

五.代码  

  先把布局的代码放上来,因为一般设计先从视图开始的。

  

1.res/layout/ welcome_activity:

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.LZT.mp3player.WelcomeActivity"android:background="@drawable/guide" ><TextViewandroid:layout_centerInParent="true"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#f8f"android:textSize="20dp"android:text="@string/welcome_to_music" /></RelativeLayout>

2.res/layout/musicplayer_activity的布局:包含一个头布局一个尾布局和一个listview

<?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" ><include layout="@layout/top_layout"/><ListViewandroid:id="@+id/mp3_lv"android:padding="5dp"android:dividerHeight="2dp"android:layout_weight="1"android:layout_width="match_parent"android:layout_height="0dp"></ListView><include layout="@layout/bottom_layout"/>
</LinearLayout>

3.top_layout和bottom_layout:

  

<?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="50dp"android:background="#20b2aa"android:orientation="vertical" >
<RelativeLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content">
<ImageButtonandroid:id="@+id/play_mode"android:layout_marginLeft="5dp"android:layout_alignParentLeft="true"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/mode_a"/>
<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="本地音乐"android:textSize="20dp"android:layout_centerInParent="true"android:textColor="#fff"android:id="@+id/title_top"/>
<ImageButtonandroid:id="@+id/love_bt"android:layout_alignParentRight="true"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/love"/>
</RelativeLayout>
</LinearLayout>

<?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="40dp"android:background="#20b2aa"android:orientation="horizontal" ><ImageButtonandroid:id="@+id/music_logo"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:layout_marginTop="5dp"android:background="#20b2aa"android:src="@drawable/music" /><ImageButtonandroid:id="@+id/pre_bt"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@drawable/pre_button_pressed" /><ImageButtonandroid:id="@+id/play_pause_bt"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@drawable/play_button_pressed"/><ImageButtonandroid:id="@+id/next_bt"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@drawable/next_button_pressed" /></LinearLayout>

<?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" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:orientation="horizontal"><ImageViewandroid:id="@+id/album_img"android:layout_width="80dp"android:layout_height="wrap_content"android:src="@drawable/default_album"/><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="我是歌手"android:id="@+id/title_tv"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="你是傻逼"android:id="@+id/artist_tv"/></LinearLayout><RelativeLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/duration"android:layout_marginRight="10dp"android:layout_marginTop="20dp"android:layout_alignParentRight="true"android:text="4:00"android:layout_width="wrap_content"android:layout_height="wrap_content"/></RelativeLayout></LinearLayout></LinearLayout>

以上是项目的组织工程和布局文件,下篇文章开始介绍业务逻辑。

转载于:https://www.cnblogs.com/taotaomajia/p/4617721.html

婧婧音乐开发笔记01篇-项目组织结构和布局文件相关推荐

  1. Android开发笔记(七十四)布局文件优化

    include/merge 布局优化中常常用到include/merge标签,include的含义类似C代码中的include,意思是直接把指定布局片段包含进当前的布局文件.include适用于多个布 ...

  2. 微信公众号Java开发-笔记01【微信公众号介绍、开发环境搭建】

    学习网址:哔哩哔哩网站 微信公众号开发-Java版 微信公众号Java开发-笔记01[微信公众号介绍.开发环境搭建] 微信公众号Java开发-笔记02[] 微信公众号Java开发-笔记03[] 微信公 ...

  3. Google Map 开发笔记——基础篇(Javascript )

    Google Map 开发笔记--基础篇 说明: 一.使用入门: 1.在您需要显示地图的 html 页面嵌入这段 script 2.地图 DOM 元素 3.初始化地图 二.地图画点.线.面 1.标记( ...

  4. 【 持续更新 】Android开发笔记汇总篇,爬各种坑,敲高效代码,各种奇难杂症,有您要治的病 。

    [持续更新]Android开发笔记汇总篇,爬各种坑,敲高效代码,各种奇难杂症,有您要治的病 . 一.AndroidStudio 开发工具的那些事 . 问题 1: AndroidStudio2.2以上在 ...

  5. AIR移动(Starling)开发笔记基础篇

    AIR移动(Starling)开发笔记基础篇 ---------kiddyPs:文档写的不是很好,欢迎指正和扩展 Starling相关 自定义移动动画 A.自定义函数 var tw:Tween = n ...

  6. 微信小程序开发笔记 进阶篇④——getPhoneNumber 获取用户手机号码(小程序云)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.云函数 五.程序流程 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机号码. 但是,因 ...

  7. 微信小程序开发笔记 进阶篇⑤——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之前)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.后端java 五.程序流程 六.参考 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机 ...

  8. (硅谷课堂项目)Java开发笔记2:项目概述,搭建项目环境和开发讲师管理接口

    文章目录 (硅谷课堂项目)Java开发笔记2:项目概述,搭建项目环境和开发讲师管理接口 1.项目概述 1.1 项目介绍 1.2 硅谷课程流程图 1.3 硅谷课堂功能架构 1.4 硅谷课堂技术架构 1. ...

  9. 微信小程序开发笔记 进阶篇⑥——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之后)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.后端java 五.程序流程 六.参考 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机 ...

最新文章

  1. 【python3】爬取鼠绘汉化的海贼王漫画
  2. 大数据在互联网金融行业中的应用
  3. 记一次PowerShell免杀实战
  4. No, Machine Learning is not just glorified Statistics
  5. LeetCode 70 爬楼梯
  6. C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)
  7. RF脚本中的坑2: pip下载python库时报certificate verify failed
  8. Python 中xrange和range区别
  9. Linux常用命令(持续更新)
  10. arcgis构建金字塔失败什么原因_天猫入驻为什么失败?知舟集团给出失败原因和解决办法...
  11. 地铁译:Spark for python developers --- 搭建Spark虚拟环境 4...
  12. Lua里面new一个对象详细步骤
  13. 【spider06】Selenium
  14. eureka-client无法启动com.netflix.discovery.DiscoveryClient : Shutting down DiscoveryClient
  15. 网络编程 多道技术与同步/异步和阻塞/非阻塞
  16. 如何做好运营?运营类产品经理必须知道的几个常用功能设计方案
  17. STM32CubeMX和STM32CubeIDE组合,定义STM32开发新方式
  18. shell命令之tar压缩与解压
  19. 大数模板——来自jxy师兄
  20. web单页面应用与多页面应用区别

热门文章

  1. HttpWebRequest自动登录网站并获取网站内容(不包含验证码的网站)
  2. 武汉大学 RSIDEA 团队开源LoveDA:可同时推进语义分割和迁移学习
  3. “3D几何与视觉技术”全球在线研讨会第五期~隐式3D形状表示学习
  4. Zbrush风格化角色大神!带你感受别致性感美学!
  5. 639 页《深度学习:Deep Learning》硬核课程 PPT 下载
  6. CVPR 2020 顶会 AI学术检索工具
  7. 北大师兄告诉你,怎样顺利完成自己的博士生涯
  8. 神经网络初始化trick:大神何凯明教你如何训练网络!
  9. php新窗口打开链接,wordpress如何设置在新窗口打开链接
  10. mysql sql 备份数据_mysql怎么进行数据库备份和还原,以及自动备份