打造自己的音乐小程序(上)——主框架设计

简介: 打造自己的音乐小程序(上)——主框架设计

效果展示


音乐小程序,点击播放效果视频


系统设计


程序主页面,其中包括header content footer 三大部分


  • header 是tab栏,用于切换页面


  • content 有 主页面信息,音乐播放器,播放列表三部分构成


    info:主页信息内容部分


    play:播放器页面


    playlist:播放列表


  • footer 是播放器,用于点击播放,切歌,查看列表,查看播放。


目录结构如下:



系统属性


首先进行整个页面的属性设置,包括小程序名称,顶部样式等等


index.json


{
  "navigationBarBackgroundColor": "#ED2E2E",
  "navigationBarTitleText": "网易云音乐",
  "navigationBarTextStyle": "white"
}


代码模块


主页面采用了include代码引用,将各部分功能分到不同的wxml文件中,代码如下


主界面:index.wxml


<!-- 标签页标题 -->
<include src="./header.wxml"/>
<!-- 内容区域 -->
<view class="content">
  <swiper current="{{item}}" bindchange="changeTab">
    <swiper-item>
      <!-- 中间信息内容部分 -->
      <include src="./info.wxml"/>
    </swiper-item>
    <swiper-item>
      <!-- 播放器页面 -->
      <include src="play.wxml" />
    </swiper-item>
    <swiper-item>
      <include src="playlist.wxml" />
    </swiper-item>
  </swiper>
</view>
<!-- 底部播放器 -->
<include src="./footer.wxml"/>


头部:header


我们要做成 tab滑动切换 的效果,在这里我们就用view实现即可



header.wxml


<view class="tab">
  <view class="tab-item {{tab==0?'active':''}}" bindtap="changeItem" data-item="0">音乐推荐</view>
  <view class="tab-item {{tab==1?'active':''}}" bindtap="changeItem" data-item="1">播放器</view>
  <view class="tab-item {{tab==2?'active':''}}" bindtap="changeItem" data-item="2">播放列表</view>
</view>


这里的css样式类有基本的共有tab属性 还有一个判断是否选中当前tab 的属性,如果后台检测到的tab值与当前选中的一样,那么给当前选中的tab加上 active 类,active 样式就是进行切换时下面的小横线。


底部:footer


底部我们要做成一个播放器样式



当我们点击头像时会跳转到播放器页面,点击三条横线时会跳转到播放列表页面,点击播放会播放音乐并变成



点击暂停会暂停音乐并变成



点击下一首切换音乐


页面设计代码如下:footer.wxml


<view class="player">
  <image class="player-cover" src="{{play.coverImgUrl}}" bindtap="dumptoplay"/>
  <view class="player-info">
    <view class="player-info-title">{{play.title}}</view>
    <view class="player-info-singer">{{play.singer}}</view>
  </view>
  <view class="player-controls">
    <!-- 切换到播放列表 -->
    <image src="/images/01.png" bindtap="changePage" data-page="2" />
    <!-- 播放或暂停 -->
    <image wx:if="{{state=='paused'}}" src="/images/02.png" bindtap="play" />
    <image wx:else src="/images/02stop.png" bindtap="pause" />
    <!-- 下一曲 -->
    <image src="/images/03.png" bindtap="next" />
  </view>
</view>


头像的调转事件


dumptoplay:function(){
  this.setData({
    item:"1",
  });
}


列表与他类似,在这不写了


播放,暂停,下一首事件


// 播放按钮
play: function() {
  this.audioCtx.play()
  this.setData({
    state: 'running'
  })
},
// 暂停按钮
pause: function() {
  this.audioCtx.pause()
  this.setData({
    state: 'paused'
  })
},
// 下一曲按钮
next: function() {
  // 如果到最后了就切换到第一首
  var index = this.data.playIndex >= this.data.playlist.length - 1 ? 0 : this.data.playIndex + 1
  this.setMusic(index)
  if (this.data.state === 'running') {
    this.play()
  }
},


相关文章
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的音乐播放器小程序附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的音乐播放器小程序附带文章源码部署视频讲解等
28 1
|
5月前
|
小程序 前端开发 JavaScript
微信小程序|音乐播放器小程序设计与实现
微信小程序|音乐播放器小程序设计与实现
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的在线音乐网站附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的在线音乐网站附带文章和源代码部署视频讲解等
39 7
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的音乐管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的音乐管理系统附带文章和源代码部署视频讲解等
43 4
|
5月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的音乐播放器小程序附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的音乐播放器小程序附带文章源码部署视频讲解等
30 0
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的音乐播放器的设计和实现附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的音乐播放器的设计和实现附带文章和源代码部署视频讲解等
34 0
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp微信小程序的音乐播放器的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的音乐播放器的详细设计和实现
48 0
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的在线云音乐系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的在线云音乐系统附带文章和源代码部署视频讲解等
34 0
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的少数民族音乐网站附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的少数民族音乐网站附带文章和源代码部署视频讲解等
29 0
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的音乐产品购物网站附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的音乐产品购物网站附带文章和源代码部署视频讲解等
30 0
下一篇
无影云桌面