注冊

微信小程序音樂播放器,音樂播放器小程序制作步驟(列表頁數(shù)據(jù))

2018-01-05
導(dǎo)讀:我們先來完成點擊排行里的項目所跳轉(zhuǎn)的排行列表。...

  獲取列表頁數(shù)據(jù)

  

  我們先來完成點擊排行里的項目所跳轉(zhuǎn)的排行列表。

  首先我們還是先編寫一下網(wǎng)絡(luò)請求的函數(shù)。

  1. function getTopListInfo(id,callback){
  2.     var data = {
  3.             g_tk: 5381,
  4.             uin: 0,
  5.             format: 'json',
  6.             inCharset: 'utf-8',
  7.             outCharset: 'utf-8',
  8.             notice: 0,
  9.             platform: 'h5',
  10.             needNewCode: 1,
  11.             tpl: 3,
  12.             page: 'detail',
  13.             type: 'top',
  14.             topid: id,
  15.             _: Date.now()
  16.         };
  17.         wx.request({
  18.             url: 'http://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg',
  19.             data: data,
  20.             header: {
  21.                 'Content-Type': 'application/json'
  22.             },
  23.             success: function (res) {
  24.                 if (res.statusCode == 200) {
  25.                     callback(res.data);
  26.                 } else {
  27.  
  28.                 }
  29.  
  30.             }
  31.         });
  32. }
  33.  
  34. module.exports = {
  35.   ...
  36.   getTopListInfo:getTopListInfo
  37. }
復(fù)制代碼

 

  返回的JSON格式數(shù)據(jù)為:

  1. {
  2.     "color": 14729248,
  3.     "comment_num": 1859,
  4.     "cur_song_num": 100,
  5.     "date": "2017_6",
  6.     "song_begin": 0,
  7.     "songlist": [
  8.         {
  9.             "Franking_value": "1",
  10.             "cur_count": "1",
  11.             "data": {
  12.                 "albumdesc": "",
  13.                 "albumid": 1829744,
  14.                 "albummid": "003GpN3b2UiNx0",
  15.                 "albumname": "Run Up",
  16.                 "alertid": 100002,
  17.                 "belongCD": 1,
  18.                 "cdIdx": 0,
  19.                 "interval": 203,
  20.                 "isonly": 1,
  21.                 "label": "0",
  22.                 "msgid": 14,
  23.                 "pay": {
  24.                     "payalbum": 0,
  25.                     "payalbumprice": 0,
  26.                     "paydownload": 1,
  27.                     "payinfo": 1,
  28.                     "payplay": 0,
  29.                     "paytrackmouth": 1,
  30.                     "paytrackprice": 200,
  31.                     "timefree": 0
  32.                 },
  33.                 "preview": {
  34.                     "trybegin": 0,
  35.                     "tryend": 0,
  36.                     "trysize": 0
  37.                 },
  38.                 "rate": 7,
  39.                 "singer": [
  40.                     {
  41.                         "id": 38150,
  42.                         "mid": "001J99OK2689F4",
  43.                         "name": "Major Lazer"
  44.                     },
  45.                     {
  46.                         "id": 177284,
  47.                         "mid": "002R2h8l05rVWb",
  48.                         "name": "PARTYNEXTDOOR"
  49.                     },
  50.                     {
  51.                         "id": 20710,
  52.                         "mid": "003kJN1r16tgOt",
  53.                         "name": "Nicki Minaj"
  54.                     }
  55.                 ],
  56.                 "size128": 3251944,
  57.                 "size320": 8129528,
  58.                 "size5_1": 0,
  59.                 "sizeape": 0,
  60.                 "sizeflac": 0,
  61.                 "sizeogg": 4972861,
  62.                 "songid": 200556634,
  63.                 "songmid": "003kPDEH3fSvh8",
  64.                 "songname": "Run Up",
  65.                 "songorig": "Run Up",
  66.                 "songtype": 0,
  67.                 "strMediaMid": "00191A2Z3qTVEr",
  68.                 "stream": 0,
  69.                 "switch": 636675,
  70.                 "type": 0,
  71.                 "vid": ""
  72.             },
  73.             "in_count": "2",
  74.             "mb": "",
  75.             "old_count": "1",
  76.             "singer2": {
  77.                 "Fgenre": "0",
  78.                 "Fsinger_id": "177284",
  79.                 "Fsinger_mid": "002R2h8l05rVWb",
  80.                 "Fsinger_name": "PARTYNEXTDOOR",
  81.                 "Ftype": "0"
  82.             },
  83.             "singer3": {
  84.                 "Fgenre": "0",
  85.                 "Fsinger_id": "20710",
  86.                 "Fsinger_mid": "003kJN1r16tgOt",
  87.                 "Fsinger_name": "Nicki Minaj",
  88.                 "Ftype": "1"
  89.             },
  90.             "vid": {
  91.                 "Fmv_id": "",
  92.                 "Fstatus": "",
  93.                 "Fvid": ""
  94.             }
  95.         },
  96.         ...
  97.         "topinfo": {
  98.         "ListName": "巔峰榜·歐美",
  99.         "MacDetailPicUrl": "http://y.gtimg.cn/music/common//upload/iphone_order_channel/20140519104205.jpg",
  100.         "MacListPicUrl": "http://y.gtimg.cn/music/common//upload/iphone_order_channel/20140519104155.jpg",
  101.         "UpdateType": "1",
  102.         "albuminfo": "QQ音樂巔峰榜·歐美專輯根據(jù)用戶收聽行為自動生成,集結(jié)當(dāng)下最流行的歐美新碟!:更新時間:每周五|統(tǒng)計周期:一周(上周五至本周四)|統(tǒng)計對象:一年內(nèi)發(fā)行的歐美專輯|排名數(shù)量:100張|統(tǒng)計算法:根據(jù)專輯內(nèi)所有歌曲在一周內(nèi)的有效播放次數(shù)總和,由高到低取前100名|有效播放次數(shù):登錄用戶完整播放一首歌曲,記為一次有效播放;同一用戶收聽同一首歌曲,每天最多記錄20次有效播放",
  103.         "headPic_v12": "http://y.gtimg.cn/music/common//upload/iphone_order_channel/20160224140905.jpg",
  104.         "info": "QQ音樂巔峰榜·歐美根據(jù)用戶收聽行為自動生成,集結(jié)當(dāng)下最流行的歐美新歌!<br><br>更新時間:每周四22點<br>統(tǒng)計周期:一周(上周四至本周三)<br>統(tǒng)計對象:三個月內(nèi)發(fā)行的歐美歌曲<br>統(tǒng)計數(shù)量:100首<br>統(tǒng)計算法:根據(jù)歌曲在一周內(nèi)的有效播放次數(shù),由高到低取前100名(同一歌手最多允許5首歌曲同時上榜)<br>有效播放次數(shù):登錄用戶完整播放一首歌曲,記為一次有效播放;同一用戶收聽同一首歌曲,每天記錄為1次有效播放。",
  105.         "listennum": 9800000,
  106.         "pic": "http://y.gtimg.cn/music/common//upload/iphone_order_channel/20141110194323.jpg",
  107.         "picDetail": "http://y.gtimg.cn/music/common//upload/iphone_order_channel/20140519104128.jpg",
  108.         "pic_album": "http://imgcache.qq.com/music/photo_new/T002R300x300M000003GpN3b2UiNx0.jpg",
  109.         "pic_h5": "http://y.gtimg.cn/music/common//upload/iphone_order_channel/20140519104015.jpg",
  110.         "pic_v11": "http://y.gtimg.cn/music/common//upload/iphone_order_channel/20141110194323.jpg",
  111.         "pic_v12": "http://y.gtimg.cn/music/common/upload/iphone_order_channel/toplist_3_300_200556634.jpg",
  112.         "topID": "3",
  113.         "type": "0"
  114.     },
  115.     "total_song_num": 100,
  116.     "update_time": "2017-02-09"
  117. }
復(fù)制代碼

 

  請求網(wǎng)絡(luò)時用到的參數(shù)ID是我們在排行頁面點擊的item的id,在上一節(jié)了我們已經(jīng)通過點擊事件將它保存在全局變量里了。

  

  在編寫布局文件之前我們先來看一下我們最后完成后的樣子,如圖

  

  微信小程序音樂播放器,音樂播放器小程序制作步驟(列表頁數(shù)據(jù))

  

 

  

  

  

  可以看到這個頁面主要由兩部分組成,上半部分為榜單的圖片以及名字等信息,下半部分是歌曲列表。

  

  我們先從歌曲列表開始,列表的每一項由序號,歌曲名稱,演唱者(多名演唱者以“|”分隔)以及專輯名稱組成,所以我們的布局文件為:

  1. <view class="song-list" >
  2.     <view class="song-item" wx:for="{{songList}}" wx:key="unique" data-data="{{item.data}}" data-index="{{index}}" bindtap="musicItemTap">
  3.         <text class="song-index">{{index+1}}</text>
  4.         <text class="song-item-title">{{item.name}}</text>
  5.         <view class="song-item-text">
  6.             <block wx:for="{{item.singer}}"  wx:key="unique">
  7.                 <block wx:if="{{index!=0}}">|</block>
  8.                 {{item.name}}
  9.             </block>
  10.             ·{{item.album.name}}
  11.         </view>
  12.     </view>
  13. </view>
復(fù)制代碼

 

  格式文件為:

  1. .song-list {
  2.     padding-left: 50px;
  3.     background: #000000;
  4. }
  5. .song-item {
  6.     position: relative;
  7.     padding: 10px 10px 10px 0;
  8.     border-bottom: 1px solid rgba(255,255,255, 0.5);
  9. }
  10.  
  11. .song-index {
  12.     position: absolute;
  13.     left: -40px;
  14.     width: 40px;
  15.     color: #fff;
  16.     font-size: 20px;
  17.     text-align: center;
  18.     line-height: 50px;
  19. }
  20. .song-item-title {
  21.     height: 30px;
  22.     line-height: 30px;
  23.     font-size: 16px;
  24.     white-space: nowrap;
  25.     overflow: hidden;
  26.     text-overflow: ellipsis;
  27.     color: #fff;
  28. }
  29. .song-item-text {
  30.     font-size: 14px;
  31.     color: rgba(255,255,255, .75);       //表示顏色
  32.     white-space: nowrap;
  33.     overflow: hidden;
  34.     text-overflow: ellipsis;
  35. }
復(fù)制代碼

 

  這部分應(yīng)該比較熟悉了,需要注意的就是多個歌手的書寫形式,除了第一個歌手外,其他都在前面加上“|”就是我們要的形式了。

  

  接下來我們完成上半部分,這部分的布局代碼很簡單:

  1. <view class="list-top">
  2.     <view class="top-info">
  3.         <view class="top-info-inner">
  4.             <view class="top-info-text">
  5.                 <view class="top-info-title">{{topinfo.ListName}}</view>
  6.                 <view class="top-info-time">
  7.                     <text>{{update_time}}  更新</text>
  8.                 </view>
  9.             </view>
  10.             <view class="top-play" bindtap="mainTopTap"></view>
  11.         </view>
  12.     </view>
  13.     <image class="top-img"  mode="aspectFit" src="{{topinfo.pic_album}}"></image>
  14.     <view class="top-back"></view>
  15. </view>
復(fù)制代碼

 

  我們在tl-top-info-inner完成了文字部分與右邊的播放按鈕,又在這部分之后加載了圖片,這樣大體的布局就完成了。但是這樣做會產(chǎn)生一個問題:我們設(shè)置文字為白色,如果加載的圖片也為白色背景,那么文字就會變的很難看清了。

  

  上一節(jié):微信小程序小白項目開發(fā)案例之音樂播放器——列表頁

  下一節(jié):微信小程序小白項目開發(fā)案例之音樂播放器——頁面渲染

重磅推薦:小程序開店目錄

第一部分:小商店是什么

第二部分:如何開通一個小商店

第三部分:如何登錄小商店

第四部分:開店任務(wù)常見問題

第五部分:小商店可以賣什么

第六部分:HiShop小程序特色功能

第七部分:小程序直播

第八部分:小程序收貨/物流

第九部分:小程序怎么結(jié)算

第十部分:小程序客服

第十一部分:電商創(chuàng)業(yè)

第十二部分:小程序游戲開發(fā)