我的编程空间,编程开发者的网络收藏夹
学习永远不晚

微信小程序怎么实现音乐排行榜

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

微信小程序怎么实现音乐排行榜

今天小编给大家分享一下微信小程序怎么实现音乐排行榜的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

  排行页

我们先在services/music.js里添加网络请求函数:

  1. function getTopMusic(callback){

  2.     var data = {

  3.             format: 'json',

  4.             g_tk: 5381,

  5.             uin: 0,

  6.             inCharset: 'utf-8',

  7.             outCharset: 'utf-8',

  8.             notice: 0,

  9.             platform: 'h6',

  10.             needNewCode: 1,

  11.             _: Date.now()

  12.         };

  13.         wx.request({

  14.             url: 'http://c.y.qq.com/v8/fcg-bin/fcg_myqq_toplist.fcg',

  15.             data: data,

  16.             header: {

  17.                 'Content-Type': 'application/json'

  18.             },

  19.             success: function (res) {

  20.                 if (res.statusCode == 200) {

  21.                     callback(res.data)

  22.                 } else {

  23.  

  24.                 }

  25.             }

  26.         });

  27. }

  28.  

  29. module.exports = {

  30.   getRecommendMusic:getRecommendMusic

  31.   getTopMusic:getTopMusic

  32. }

复制代码

  这里返回的JSON格式数据为:

  1. {

  2.     "code": 0,

  3.     "subcode": 0,

  4.     "message": "",

  5.     "default": 0,

  6.     "data": {

  7.         "topList": [

  8.             {

  9.                 "id": 4,

  10.                 "listenCount": 20000000,

  11.                 "picUrl": "https://file.lsjlt.com/upload/202306/25/yfmywyoaatf.jpg",

  12.                 "songList": [

  13.                     {

  14.                         "singername": "赵雷",

  15.                         "songname": "理想 (Live)"

  16.                     },

  17.                     {

  18.                         "singername": "薛之谦/欧阳娜娜",

  19.                         "songname": "小幸运 (Live)"

  20.                     },

  21.                     {

  22.                         "singername": "迪玛希Dimash",

  23.                         "songname": "秋意浓 (Live)"

  24.                     }

  25.                 ],

  26.                 "topTitle": "巅峰榜·流行指数",

  27.                 "type": 0

  28.             },

  29.             {

  30.                 "id": 26,

  31.                 "listenCount": 19900000,

  32.                 "picUrl": "https://file.lsjlt.com/upload/202306/25/sp4t1gf3cjv.jpg",

  33.                 "songList": [

  34.                     {

  35.                         "singername": "李玉刚",

  36.                         "songname": "刚好遇见你"

  37.                     },

  38.                     {

  39.                         "singername": "周杰伦",

  40.                         "songname": "告白气球"

  41.                     },

  42.                     {

  43.                         "singername": "张杰",

  44.                         "songname": "三生三世"

  45.                     }

  46.                 ],

  47.                 "topTitle": "巅峰榜·热歌",

  48.                 "type": 0

  49.             },

  50.             ...

  51.         ]

  52.     }

  53. }

复制代码

  可以看到这里显示了两类排行榜:“巅峰榜·流行指数”与“巅峰榜·热歌”,篇幅原因省去了其他12类,所以实际返回的排行榜类别为14类,每一类包涵标题("topTitle"),该类的图标图片地址("picUrl"),以及前三位的歌曲列表("songList")。因此,我们最后要达成的页面应该为图所示。

  同理上一节内容,我们新增topList数组,调用网络请求,使用回调函数为topList赋值。

  1. //引用网络请求文件

  2. var MusicService = require('../../services/music');

  3.  

  4. //获取应用实例

  5. var app = getApp()

  6. Page({

  7.     data: {

  8.         indicatorDots: true,

  9.         autoplay: true,

  10.         interval: 5000,

  11.         duration: 1000,

  12.         radioList: [],

  13.         slider: [],

  14.         mainView: 1,

  15.         topList:[]

  16.     },

  17.     onLoad: function () {

  18.         var that = this;

  19.         MusicService.getRecommendMusic(that.initPageData);

  20.         MusicService.getTopMusic(that.initTopList);

  21.     },

  22.  

  23.     ...

  24.  

  25.     initTopList: function (data) {

  26.         var self = this;

  27.         if (data.code == 0) {

  28.             self.setData({

  29.                 topList: data.data.topList

  30.             })

  31.         }

  32.     },

  33.  

  34.     ...

  35.  

  36. })

  37.  

复制代码

  排行页主要由列表组成,所以使用wx:for为topList每一项创建view,绑定每一项的id和点击事件topListTap。

  1. <!-- 排行页 -->

  2. <view class="top-view" hidden="{{currentView != 2}}">

  3.   <view class="top-item" wx:for="{{topList}}" wx:key="unique" data-id="{{item.id}}" bindtap="topListTap">

  4.     ...

  5.   </view>

  6. </view>

复制代码

  列表的每一项由图片(数据源为picUrl)以及前三名歌曲列表(数据源为songList)组成。我们把这一部分加入到省略号位置。

  1. <!-- 排行页 -->

  2. <view class="top-view" hidden="{{currentView != 2}}">

  3.   <view class="top-item" wx:for="{{topList}}" wx:key="unique" data-id="{{item.id}}" bindtap="topListTap">

  4.     <image class="top-item-img" mode="aspectFit" class="lazy" data-src="{{item.picUrl}}" />

  5.     <view class="top-item-info">

  6.       ...

  7.     </view>

  8.   </view>

  9. </view>

复制代码

  图片定义了属性aspectFit,即在保持纵横比的前提下,缩放图片,使图片在容器内都显示出来。

  

  最后我们添加歌曲列表,每一项由文字(歌曲名-歌手)以及表示排名的图片组成。这个图片为本地图片,保存在resources/images下,名称为1.png,2.png,3.png。所以这部分最终的代码为:

  1. <!-- 排行页 -->

  2. <view class="top-view" hidden="{{currentView != 2}}">

  3.   <view class="top-item" wx:for="{{topList}}" wx:key="unique" data-id="{{item.id}}" bindtap="topListTap">

  4.     <image class="top-item-img" mode="aspectFit" class="lazy" data-src="{{item.picUrl}}" />

  5.     <view class="top-item-info">

  6.       <view class="top-item-list" wx:for="{{item.songList}}" wx:key="unique">

  7.         <image class="top-icon" class="lazy" data-src="../../resources/images/{{index+1}}.png" />

  8.         <text class="top-item-text">{{item.songname}}-{{item.singername}}</text>

  9.       </view>

  10.     </view>

  11.   </view>

  12. </view>

复制代码

  需要的格式文件代码为:

  1. .top-view {

  2.     background:#f7f7f7;

  3.     padding:20rpx;

  4. }

  5. .top-item {

  6.     display:-webkit-box;

  7.     height:200rpx;

  8.     margin-bottom:20rpx;

  9.     background:#fff;

  10.     overflow: hidden;

  11. }

  12. .top-item-img {

  13.     display:block;

  14.     position:relative;

  15.     width:200rpx;

  16.     height:200rpx;

  17. }

  18. .top-item-info {

  19.     margin:0 10rpx 0 20rpx;

  20.     flex-direction:column;

  21. }

  22. .top-item-list {

  23.     white-space:nowrap;

  24. }

  25. .top-icon {

  26.     margin-top:16rpx;

  27.     width:40rpx;

  28.     height:40rpx;

  29. }

  30. .top-item-text {

  31.     margin-bottom: 10rpx;

  32.     font-size:40rpx;

  33. }

复制代码

  页面完成后,在index.js里添加点击事件的代码:

  1. topListTap: function (e) {

  2.         wx.navigateTo({

  3.             url: '../toplist/toplist'

  4.         })

  5.     },

复制代码

  这样在点击之后就进入了列表页面,但这样还不能完成我们的要求,因为这样列表页完全不知道我们点击了哪一类。为了让列表页获取这个信息,我们需要把类的id传过去,这就需要我们在app.js里添加一个全局变量。

  1. //app.js

  2. App({

  3.   onLaunch: function () {

  4.     //调用API从本地缓存中获取数据

  5.     var logs = wx.getStorageSync('logs') || []

  6.     logs.unshift(Date.now())

  7.     wx.setStorageSync('logs', logs)

  8.   },

  9.   getUserInfo:function(cb){

  10.     var that = this

  11.     if(this.globalData.userInfo){

  12.       typeof cb == "function" && cb(this.globalData.userInfo)

  13.     }else{

  14.       //调用登录接口

  15.       wx.login({

  16.         success: function () {

  17.           wx.getUserInfo({

  18.             success: function (res) {

  19.               that.globalData.userInfo = res.userInfo

  20.               typeof cb == "function" && cb(that.globalData.userInfo)

  21.             }

  22.           })

  23.         }

  24.       })

  25.     }

  26.   },

  27.   //这里是我们添加的代码!!!

  28.   setGlobalData: function (obj) {

  29.     for(var n in obj) {

  30.       this.globalData[n] = obj[n];

  31.     }

  32.   },

  33.   globalData:{

  34.     userInfo:null

  35.   }

  36. })

复制代码

  这里定义了一个方法,让我们可以向globalData里添加数据,之后我们只需在点击事件里调用这个方法就可以了:

  1. topListTap: function (e) {

  2.         var _dataSet = e.currentTarget.dataset;   //获取点击的view的数据

  3.         app.setGlobalData({                       //将数据里的id传给globaldata

  4.             topListId: _dataSet.id

  5.         });

  6.         wx.navigateTo({

  7.             url: '../toplist/toplist'

  8.         })

  9.     },

以上就是“微信小程序怎么实现音乐排行榜”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

微信小程序怎么实现音乐排行榜

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

微信小程序怎么实现音乐排行榜

今天小编给大家分享一下微信小程序怎么实现音乐排行榜的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。  排行页我们先在servi
2023-06-26

微信小程序排行榜页面怎么实现

这篇文章主要讲解了“微信小程序排行榜页面怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序排行榜页面怎么实现”吧!微信小程序排行榜页面实例实现原理:利用背景图片以及nth-ch
2023-06-26

微信小程序怎么实现音乐播放器

本篇内容介绍了“微信小程序怎么实现音乐播放器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   开始构建小程序首页。  第一步,我们需要创建
2023-06-26

微信小程序怎么实现音乐播放控制

这篇文章主要介绍了微信小程序怎么实现音乐播放控制的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序怎么实现音乐播放控制文章都会有所收获,下面我们一起来看看吧。基础库 1.2.0 开始支持,低版本需做兼容处
2023-06-26

微信小程序游戏好友排行榜怎么开发

本文小编为大家详细介绍“微信小程序游戏好友排行榜怎么开发”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序游戏好友排行榜怎么开发”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。保存每个用户的分数保存每个用户
2023-06-26

Android微信小程序播放背景音乐怎么实现

这篇文章主要介绍“Android微信小程序播放背景音乐怎么实现”,在日常操作中,相信很多人在Android微信小程序播放背景音乐怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android微信小程序播
2023-06-26

微信小程序怎么实现录音

今天小编给大家分享一下微信小程序怎么实现录音的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。为录音录音中wxml: