1. 程式人生 > >Android--MediaPlayer音樂播放器歌詞隨時間高亮顯示

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

package com.mrzhu.hightlight;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
import android.widget.TextView;

public class LRCHighLightActivity extends Activity {
	protected static final int SHOWHIGH = 0;
	private TextView tvShowLrcHighLight;
	private int start = 0;
	private int end = 1;
	private boolean flag = true;
	private String content = 
			"愛你變習慣不再稀罕\n" +
			"我們該冷靜談一談\n" +
			"你說你喜歡一點點浪漫\n" +
			"卻把跟隨我的腳步放慢\n" +
			"沒有你分享分擔\n" +
			"我的快樂悲傷\n" +
			"心情天天天天紛亂\n" +
			"我一再試探\n" +
			"你一再隱瞞\n" +
			"是誰改變愛情原來的模樣\n" +
			"有一種預感愛就要離岸\n" +
			"所有回憶卻慢慢碎成片斷\n" +
			"不能盡歡愛總是苦短\n" +
			"我只想要你最後的答案\n" +
			"有一種預感想挽回太難\n" +
			"對你還有無可救藥的期盼\n" +
			"我坐立難安望眼欲穿\n" +
			"我會永遠守在燈火闌珊的地方";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tvShowLrcHighLight = (TextView) findViewById(R.id.tvLRCHighLight);
        new Thread(new Runnable(){
			public void run() {
				while(flag){
					try {
						if(end < content.length()){
							start++;
							end++;
							Bundle b = new Bundle();
							b.putInt("start", start);
							b.putInt("end", end);
							Message msg = handler.obtainMessage(SHOWHIGH, b);
							handler.sendMessage(msg);
						}else{
							flag = false;
						}
						Thread.sleep(500);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
        	
        }).start();
    }
    
    private Handler handler = new Handler(){
    	public void handleMessage(android.os.Message msg) {
    		switch(msg.what){
    		case SHOWHIGH:
    			Bundle b = (Bundle) msg.obj;
    			int start = b.getInt("start");
    			int end = b.getInt("end");
    			SpannableStringBuilder ssb = new SpannableStringBuilder(content);
    			ssb.setSpan(new ForegroundColorSpan(Color.YELLOW), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    			tvShowLrcHighLight.setText(ssb);
    			break;
    		}
    	};
    }; 
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvLRCHighLight"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.24"
        android:gravity="center"
        android:text="@string/hello"
        android:textSize="20sp" />

</LinearLayout>

相關推薦

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

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

android MusicPlayer 音樂播放 Lrc歌詞控制元件的實現

package com.example.zhsmusicplayer; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce

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

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

Android實現音樂播放(一)

simple ani call ket 打開文件 界面 方式 .cn 點擊 Graphical User Interface 本篇文章記錄了我實現Android簡單音樂播放器的過程,(一)中介紹了怎麽構建音樂播放器的前端頁面。首先大家看一下,界面最後是這樣的(界面有

android呼叫音樂播放,三種方法

小弟想請問一下,如何在自己寫的程式中呼叫系統的音樂播放器呢。 我在google上搜索了,主要是有兩種方法,但是都不是我想要的。第一種是,使用mp3音樂檔案的uri,和intent,進行呼叫,但是這種是針對某一首歌曲的播放使用的。 /** * 播放指定名稱的歌曲

Android Studio音樂播放

大三上學期移動應用開發課的作業。有一些粗心的錯誤當時沒有改正過來,而且讀取音樂歌曲的部分程式碼為了趕時間沒有繼續抽象出來成一個函式。以後繼續學java會找機會繼續完善。 -------------------------------------------------

android音樂播放之設計思路

           學習Android有一個多月,看完了《第一行程式碼》以及mars老師的第一期視訊通過音樂播放器小專案加深對知識點的理解。從本文開始,將詳細的介紹簡單仿多米音樂播放器的實現,以及網路解析資料獲取百度音樂最新排行音樂以及下載功能。         功能介紹

android呼叫音樂播放,三種方

小弟想請問一下,如何在自己寫的程式中呼叫系統的音樂播放器呢。 我在google上搜索了,主要是有兩種方法,但是都不是我想要的。第一種是,使用mp3音樂檔案的uri,和intent,進行呼叫,但是這種

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

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

android音樂播放之UI設計的點點滴滴

       學習Android有一個多月,看完了《第一行程式碼》以及mars老師的第一期視訊通過音樂播放器小專案加深對知識點的理解。從本文開始,將詳細的介紹簡單仿多米音樂播放器的實現,以及網路解析資料獲取百度音樂最新排行音樂以及下載功能。         功能介紹如下

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

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

Android音樂播放邊播邊快取(一)AndroidVideoCache的使用方法

最近在做音樂播放器類的需求,做了一段時間,抽出一段時間來整理一下。【前言】首先,記錄一下如何找到我們與需求相關的開源庫。可以在GitHub上進行搜尋,我的主要需求是邊播邊快取。因此我在GitHub上搜索“android”“cache”等關鍵詞,搜到了這個 AndroidVid

android實現音樂播放(進度條)

|--效果圖 |--依賴3個物件     MediaPlayer:實現音樂播放,暫停,緩衝。     SeekBar:滑動的進度條。     java.util.Timer:定時器,時時更新進度條。 |--main.xml樣式檔案 [html] view plai

android音樂播放之service服務設計

       學習Android有一個多月,看完了《第一行程式碼》以及mars老師的第一期視訊通過音樂播放器小專案加深對知識點的理解。從本文開始,將詳細的介紹簡單仿多米音樂播放器的實現,以及網路解析資料獲取百度音樂最新排行音樂以及下載功能。         功能介紹如下

在gvim編輯中設定永久顯示

一、找到安裝目錄,並找到_vimrc檔案。 二、編輯_vimrc:   加入以下內容:      set nu!      colorscheme desert       syntax

[Android]結合MediaPlayer和Service的音樂播放

通過參照網上其他人的MP3播放器,自己也在這些基礎上小試牛刀,製作的了一個MP3的播放器,先上個介面先: 接下來就上程式碼: 首先是.mp3格式的音樂檔案的過濾類單獨在一個java檔案中: package com.example.mediaplayer; import

Android實現簡單音樂播放(MediaPlayer)

工程內容 實現一個簡單的音樂播放器,要求功能有: 播放、暫停功能;進度條顯示播放進度功能拖動進度條改變進度功能;後臺播放功能;停止功能;退出功能; 程式碼實現 匯入歌曲到手機SD卡的Music目錄中,這裡我匯入了4首歌曲:仙劍六裡面的《誓言成暉》、《劍客不能說》、《鏡

Android開發本地及網路Mp3音樂播放(十五)網路音樂歌詞下載功能實現

實現功能: 實現網路音樂歌詞下載功能(下載音樂的同時,下載對應歌詞) 下載好的歌詞目前不在播放器內,可以通過檔案瀏覽器檢視。 後續將博文,將實現本地音樂歌詞下載和已下載音樂掃描功能。 因為,沒有自己的伺服器,所以網路音樂所有相關功能(包含搜尋音樂、下載音樂、下載歌詞)均無法

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

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

Android 超簡單音樂播放(十)歌詞的實現

關於歌詞 有下面這些: 歌詞的獲取 歌詞的解析 自定義View 歌詞的獲取 歌詞的獲取分為兩種,一種是從本地一種是通過網路上提供的API獲取。我選擇的是歌詞迷的API http://api.geci.me/en/latest/ 說實話,這