Android 音乐播放器设计


  • 自动打入本地音乐文件
  • 支持切歌功能
  • 返回后继续播放
  • 代码注释详细
  • 借助日志工具方便调试

  • Android 音乐播放器设计
    • UI设计
    • 功能需求
    • 设计想法
          • 关于布局
          • 关于活动
    • 代码

UI设计

  • 主界面

    • 播放界面

功能需求

  • 主界面需要显示歌曲的名字、艺术家、歌曲长度
  • 播放界面需要有播放、暂停、切到前一首歌、切到后一首歌、返回、分享、歌曲名、歌手
  • 播放界面的播放和暂停按钮设置在同一个地方,放歌时显示暂停按钮,暂停时显示播放按钮
  • 从播放界面返回主界面时需要继续播放歌曲
  • 在主界面点击一首歌后,就立即开始播放

设计想法

activity文件:

  • MainActivity.java : 主界面,用于显示歌曲列表
  • MusicActivity.java : 播放界面,显示歌曲的具体信息,实现切歌、暂停等功能

class文件:

  • GetSongs.java : 获取手机内存及SD卡中所有的歌曲
  • Song.java : 歌曲的实体类,储存歌曲信息
  • SongAdapter : 自定义的适配器,继承自ArrayAdpter,泛型指定为Song类,完成ListView控件的实现

layout文件:
- activity_main.xml : 主界面的layout设计
- activity_music.xml : 播放界面的layout设计
- song_item.xml : 此布局包括了一个Imageview用来显示歌曲图片,三个TextView用来显示歌曲的信息

关于布局
  1. 设计界面时需要用到一些图标,可以将按钮的背景设为矢量图。
    图标可以在阿里巴巴矢量图下载
  2. 主界面采用ListView控件,定制ListView的界面。
    具体步骤:
    - 在activity_main.xml添加ListView控件
    - 定义一个实体类Song
    - 创建一个布局song_item.xml,用于ListView子项的显示
    布局形式:
    采用线性布局和相对布局嵌套使用
关于活动

1、 如果实现MainActivity与MusicActivity的数据交流:
采用JSON的方式,具体可参考
如何导入JSON包
Activity与Intent之间传递自定义数据
在MainActivity中发送:

``` java//调用MusicActivityIntent intent = new Intent(MainActivity.this,MusicActivity.class);intent.putExtra("Song_position",new Gson().toJson(position));//传递这首歌的位置intent.putExtra("Song",new Gson().toJson(songSelected));//传递这首歌的具体信息intent.putExtra("Song_list",new Gson().toJson(songList));//传递整个歌曲列表//启动活动startActivity(intent);```

在MusicActivity中接收:

        Intent intent = getIntent();        String JsonData = intent.getStringExtra("Song");        songSelected = new Gson().fromJson(JsonData, Song.class); //接收选中的歌曲信息        String JsonData2 = intent.getStringExtra("Song_position");        songPosition = new Gson().fromJson(JsonData2, int.class); //接收选中的歌曲在列表中的位置        String JsonData3 = intent.getStringExtra("Song_list");        songList = new Gson().fromJson(JsonData3, new TypeToken<List<Song>>(){}.getType()); //接收整个歌曲列表

2、 如何实现从MusicActivity返回后继续播放:
方法一:
将MusicActivity的启动模式设置为singleInstance:
这样MusicActivity将单独存在于一个返回栈中,在与MainActivity相互转换的时候,MusicActivity活动仍然存在不会被摧毁。
设置方法是在AndroiManifest.xml中对MusicActivity设置为:

            <activity android:name=".Music_Activity"                android:launchMode="singleInstance">                <intent-filter>                    <action android:name=".ACTION_START"/>                    <action android:name="android.intent.category.DEFAULT"/>                    <action android:name=".MY_CATEGORY"/>                intent-filter>             activity>

方法二:
将在MusicActivity中接收的数据定义成静态变量,这样即使MusicActivity活动被摧毁,建立的MediaPlayer对象以及Song对象都能保存下来。

代码

点击下载

更多相关文章

  1. 使用Linkify + 正则式区分微博文本链接及跳转处理
  2. 利用Android游戏引擎Angle开发界面——显示汉字
  3. Android中的MVC和MVP
  4. android集成 ijkplayer Ijkplayer集成使用方案 + demo
  5. 分享开发 Android(安卓)手机应用的开发经验——QR生成器
  6. 还不知道 Jetpack,你可能赶不上Android开发时代的新脚步
  7. Android(安卓)不得不说的VideoView的一些坑及其解决方案(转)
  8. Android(安卓)UI秘笈:谨记该做什么不该做什么
  9. Android常用设计模式(工厂设计模式)

随机推荐

  1. Android常见主题
  2. android 文本走马灯代码
  3. android:theme大全
  4. Android——四种基本布局
  5. Android下实现一个Activity的全屏显示
  6. android selector状态详解
  7. Android系统自带样式(android:theme)详解
  8. android 资源引用
  9. android ImageView的属性android:scaleTy
  10. android在Gridview实现Textview跑马灯效