1. 程式人生 > >安卓音樂播放器歌詞滾動顯示

安卓音樂播放器歌詞滾動顯示

——— 歌德


本文系轉載,出處已經標明,以前寫播放器苦於音樂歌詞的顯示問題,當時解決的方法是去github找開源控制元件,無奈是別人的輪子,尺寸大小不對,只好湊活著用了,無聊逛了下csdn,發現有這篇文章,果斷收藏。以後歌詞顯示就直接自己造輪子用了~~~~~~~~~

實現功能:


歌詞顯示及滾動事件實現
ViewPager使用

後續將博文,將實現已下載音樂掃描功能和已存在歌曲歌詞下載。

因為,沒有自己的伺服器,所以網路音樂所有相關功能(包含搜尋音樂、下載音樂、下載歌詞)均無法保證時效性,建議,儘快下載和練習;如果你下載時候,已經因為我採集的伺服器更改規則,請給我留言,如果可以解決,我將在有空的時候獻上新的原始碼。


截止到目前的原始碼下載:
http://download.csdn.net/album/detail/3105
(最新的,請下載最後一個,本博文對應版本2.1;如果需要逐步實現的過程,請下載所有)

歡迎移動開發愛好者交流:我的微信是iwanghang

另外,我打算開始找工作,如果瀋陽或周邊城市公司有意,也請與我聯絡。

實現效果如圖:


實現程式碼如下:

PlayActivity如下:

  1. package com.iwanghang.drmplayer;  
  2. import android.graphics.Bitmap;  
  3. import
     android.media.MediaPlayer;  
  4. import android.os.Bundle;  
  5. import android.os.Environment;  
  6. import android.os.Handler;  
  7. import android.os.Message;  
  8. import android.support.v4.view.ViewPager;  
  9. import android.support.v4.view.ViewPager.OnPageChangeListener;  
  10. import android.view.LayoutInflater;  
  11. import android.view.View;  
  12. import android.view.View.OnClickListener;  
  13. import android.widget.ImageView;  
  14. import android.widget.SeekBar;  
  15. import android.widget.SeekBar.OnSeekBarChangeListener;  
  16. import android.widget.TextView;  
  17. import android.widget.Toast;  
  18. import com.douzi.android.view.DefaultLrcBuilder;  
  19. import com.douzi.android.view.ILrcBuilder;  
  20. import com.douzi.android.view.ILrcView;  
  21. import com.douzi.android.view.LrcRow;  
  22. import com.douzi.android.view.LrcView;  
  23. import com.iwanghang.drmplayer.adapter.ViewPagerAdapter;  
  24. import com.iwanghang.drmplayer.utils.Constant;  
  25. import com.iwanghang.drmplayer.utils.ImageUtils;  
  26. import com.iwanghang.drmplayer.utils.MediaUtils;  
  27. import com.iwanghang.drmplayer.vo.Mp3Info;  
  28. import com.lidroid.xutils.db.sqlite.Selector;  
  29. import com.lidroid.xutils.exception.DbException;  
  30. import java.io.BufferedReader;  
  31. import java.io.File;  
  32. import java.io.FileInputStream;  
  33. import java.io.FileNotFoundException;  
  34. import java.io.IOException;  
  35. import java.io.InputStreamReader;  
  36. import java.lang.ref.WeakReference;  
  37. import java.util.ArrayList;  
  38. import java.util.List;  
  39. importstatic com.iwanghang.drmplayer.PlayService.ORDER_PLAY;  
  40. importstatic com.iwanghang.drmplayer.PlayService.RANDOM_PLAY;  
  41. importstatic com.iwanghang.drmplayer.PlayService.SINGLE_PLAY;  
  42. /** 
  43.  * PlayActivity 點選MyMusicListFragment(本地音樂)底部UI中的專輯封面圖片開啟的Activity 
  44.  */
  45. publicclass PlayActivity extends BaseActivity implements OnClickListener, OnSeekBarChangeListener ,OnPageChangeListener {  
  46.     private TextView textView2_title;//歌名
  47.     private ImageView imageView1_ablum;//專輯封面圖片
  48.     private SeekBar seekBar1;//進度條
  49.     private TextView textView1_start_time, textView1_end_time;//開始時間,結束時間
  50.     private ImageView imageView1_play_mode;//選單
  51.     private ImageView imageView3_previous, imageView2_play_pause, imageView1_next;//上一首,播放暫停,下一首
  52.     private ImageView imageView1_ablum_reflection;//專輯封面圖片倒影
  53.     private ImageView imageView1_favorite;//收藏按鈕
  54.     //private ArrayList<Mp3Info> mp3Infos;
  55.     //private int position;//當前播放的位置
  56.     privateboolean isPause = false;//當前播放的是否為暫停狀態
  57.     privatestaticfinalint UPDATE_TIME = 0x10;//更新播放事件的標記
  58.     private DRMPlayerApp app;//取出全域性物件 方便呼叫
  59.     //歌詞
  60.     private ViewPager viewPager;  
  61.     private LrcView lrcView;// 自定義歌詞檢視
  62.     private ArrayList<View> views = new ArrayList<>();  
  63.     privatestaticfinalint UPDATE_LRC = 0x20;//更新播放事件的標記
  64.     ILrcView mLrcView;  
  65.     publicfinalstatic String TAG = "PlayActivity";  
  66.     private MediaPlayer mPlayer;  
  67.     private ViewPagerAdapter adapter;  
  68.     @Override
  69.     protectedvoid onCreate(Bundle savedInstanceState) {  
  70.         super.onCreate(savedInstanceState);  
  71.         setContentView(R.layout.activity_music_play);  
  72.         //取出全域性物件 方便呼叫
  73.         app = (DRMPlayerApp) getApplication();  
  74.         //初始化介面資訊
  75.         //textView2_title = (TextView) findViewById(R.id.textView2_title);//歌名
  76.         //imageView1_ablum = (ImageView) findViewById(R.id.imageView1_ablum);//專輯封面圖片
  77.         seekBar1 = (SeekBar) findViewById(R.id.seekBar1);//進度條
  78.         textView1_start_time = (TextView) findViewById(R.id.textView1_start_time);//開始時間
  79.         textView1_end_time = (TextView) findViewById(R.id.textView1_end_time);//結束時間
  80.         imageView1_play_mode = (ImageView) findViewById(R.id.imageView1_play_mode);//選單
  81.         imageView3_previous = (ImageView) findViewById(R.id.imageView3_previous);//上一首
  82.         imageView2_play_pause = (ImageView) findViewById(R.id.imageView2_play_pause);//播放暫停
  83.         imageView1_next = (ImageView) findViewById(R.id.imageView1_next);//下一首
  84.         imageView1_favorite = (ImageView) findViewById(R.id.imageView1_favorite);//收藏按鈕
  85.         lrcView = (LrcView) findViewById(R.id.lrcView);//自定義歌詞檢視
  86.         //註冊按鈕點選監聽事件
  87.         imageView1_play_mode.setOnClickListener(this);  
  88.         imageView2_play_pause.setOnClickListener(this);  
  89.         imageView3_previous.setOnClickListener(this);  
  90.         imageView1_next.setOnClickListener(this

    相關推薦

    音樂播放歌詞滾動顯示

    ——— 歌德 本文系轉載,出處已經標明,以前寫播放器苦於音樂歌詞的顯示問題,當時解決的方法是去github找開源控制元件,無奈是別人的輪子,尺寸大小不對,只好湊活著用了,無聊逛了下csdn,發現有這篇文章,果斷收藏。以後歌詞顯示就直接自己造輪子用了~

    MP3播放開發實例(3)之進度條和歌詞更新的實現

    tac run detail datetime style mem poll() arc call 上一次談了音樂播放的實現,這次說下最復雜的進度條和歌詞更新。因為須要在播放的Activity和播放的Service間進行交互,所以就涉及了Activi

    實現音樂播放歌詞顯示效果

    這兩天有個任務,說是要寫一個QQ音樂播放器歌詞的那種效果,畢竟剛學自定義View,沒有什麼思路,然後就Google.寫了一個歌詞效果,效果圖在後面,下面是我整理的程式碼。 首先實現這種效果有兩種方式     1.自定義View裡過載onDraw方法,自己繪製歌詞     2

    Android--MediaPlayer音樂播放歌詞隨時間高亮顯示

    package com.mrzhu.hightlight; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.os

    多媒體播放的開發

    lis list 媒體 ongl .com ava aid 多媒體 http JaVa%E5%8F%8D%E5%B0%84%E6%9C%BA%E5%88%B6%E5%AE%9E%E7%8E%B0%E5%8F%8A%E5%8E%9F%E7%90%86 http://musi

    視訊播放——ijkPlayer(Bilibili開源)

    作為一個B站(Bilibili)使用者,特別喜歡B站的播放器 湊巧,發現了b站的github的地址。。嘿嘿。。B站github地址f 發現了ijkplayer播放器,支援android 和ios 我們用AndroidStudio新建project名字是bilibili_ijkplay

    視訊播放

      磨洋工磨了好久,終於決定開始寫視訊播放器了,嗯,相簿播放器那裡,就是典型的舊坑未填,又挖新坑,233.再辭給自己立一個flag,一個月之後就要完成基本上的功能,比如基本的顯示,自動播放了,上一個下一個,暫停開始,拖拉,視訊列表。嗯,其他的慢慢來,總是要有個目標的,都沒人管

    android 音樂播放-------歌詞同步 lrc

    lrc格式 : [al:這首歌所在的唱片集 ] [ar:歌詞作者 ] [by:本LRC檔案的建立者 ] [offset:+/- 以毫秒為單位整體時間戳調整,+增加,-減小 ] [re:建立此LRC檔案的播放器或編輯器 ] [ti:歌詞(歌曲)的標題 ] [ve:程式的版本 ]

    用Vue來實現音樂播放(三十八):歌詞滾動列表的問題

    vue 三十八 pla -s toggle 情況 TP 解決辦法 暫停 1、頻繁切換歌曲時,歌詞會跳來跳去 原因: // 歌詞跳躍是因為內部有一個currentLyric對像內部有一些功能來完成歌詞的跳躍 //每個currentLyric能實現歌曲的播放跳到相應的位置 是

    仿網易雲介面的本地音樂播放的實現

    前言:讀研究生之前,老闆讓學IOS,老老實實看了一個學期的IOS(在這裡強烈安利一下騰訊課堂的小碼哥IOS視訊,基本剛開始只需要10塊買第一部,後面的就可以用可視幣來兌換了,質量還不錯,能學到很多東西,看三部基本IOS就能入門了),結果開學提前兩個月被叫去幹活,一開會,說IO

    android程式設計例項-音樂播放歌詞顯示

            今天分享一個歌詞顯示的專案,首先讓我們來看看一般歌詞是什麼樣的格式,就拿神曲《小蘋果》來說的,請看歌詞: [00:00.91]小蘋果 [00:01.75]作詞:王太利 作曲:王太利 [00:02.47]演唱:筷子兄弟 [00:03.32] [00:17.4

    C#_音樂播放_用ListBox顯示歌詞

      在用ListBox顯示歌詞的時候,可以顯示多行,同時可以控制每一行顯示的樣式等等。控制顯示樣式是在它的DrawItem事件中來控制的。首先要先將ListBox的DrawMode屬性設定為OwnerDrawVariable或OwnerDrawFixed。ListBox有

    原生js實現音樂播放功能,可以實時顯示歌詞並且高亮當前句

    最近在做專案,總結一下學到的知識, 首先就是一個簡單的音樂播放器。可以顯示歌詞,並且突出顯示當前播放的這一句。 但是歌詞必須是要轉碼成utf-8的,不然是亂碼,後面提供我淘到的轉碼工具,非常簡單,把

    例項】3音樂播放簡單版

    package com.terry; import java.io.File; import java.util.ArrayList; import java.util.List;  import android.app.ListActivity; import android.media.MediaPla

    Android 音樂播放實現歌詞顯示

    LrcHandle.java: package com.example.welcome; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import

    關於音樂播放歌詞同步顯示的實現

    做專案,用到顯示歌詞,現在一般聽歌MP3是最普遍的,歌詞檔案就是對應的lrc檔案,有的MP3檔案包含歌詞,但說實話還真沒碰到,我就是在播放MP3檔案時收索對應的lrc檔案,然後把歌詞讀出來,分離處時間標籤和歌詞,根據時間標籤來顯示歌詞,我用到的directshow介面播放的音

    用Vue來實現音樂播放(十六):滾動列表的實現

    com 作用 efault nor 大小 -s stylus BE ack 滾動列表是一個基礎組件 他是基於scroll組件實現的 在base文件夾下面創建一個list-view文件夾 裏面有list-view.vue組件 <template>

    MediaPlayer播放asset檔案下的音樂檔案

    第一種方式,通過一個物件去管理 public class PlayRam { private MediaPlayer mediaPlayer; public MediaPlayer getMediaPlayer() { return mediaPlayer;

    Lily_music 網頁音樂播放 -可搜尋(附歌詞聯動播放效果解說)

    部落格地址:https://ainyi.com/#/59 寫在前面 這是我今年(2018)年初的小專案,當時也是手賤,不想用別的播放器,想著做一個自己的網頁播放器,有個歌曲列表、可關鍵詞搜尋、歌詞滾動播放的效果,於是乎,就做了這一個 Lily_music 當時的感慨 有好幾天沒有發表

    【達內課程】音樂播放4.0(圖片顯示)

    ListView中非同步批量載入圖片業務 使用單執行緒輪循任務佇列的機制完成該業務 效果圖 MusicAdapter import android.content.Context; import android.graphics.Bitmap; import andro