Android 自定义歌词滚动

Android 自定义歌词滚动

1丶在配置清单当中加入权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2丶在Assets里面加入歌和歌词:

     (  看自己喜欢什么歌)

MainActivity

package com.example.lyricdemo;

import java.util.List;
import com.example.lyricdemo.LrcView.MedCallBack;
import android.R.plurals;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.view.Menu;

public class MainActivity extends Activity implements MedCallBack{

private LrcRows lrcRows=new LrcRows();
private MediaPlayer mediaPlayer=new MediaPlayer();
private boolean timeFlag=true;
private LrcView lrcView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        initview();
    }
    Handler handler=new Handler(){
    public void handleMessage(android.os.Message msg) {
    if (msg.what==0) {
int time=mediaPlayer.getCurrentPosition();
lrcView.LrcToPlayer(time);//根据播放的进度,时时跟新歌词
}
    };
    };
    
Thread thread=new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
while (timeFlag) {

try {
Thread.sleep(1000);
} catch (Exception e) {

}
handler.sendEmptyMessage(0);
}
}
});


private void initview() {
// TODO Auto-generated method stub
List<LrcRow>list=lrcRows.BuildList(this);
lrcView = (LrcView)findViewById(R.id.mylrcview);
lrcView.setLrc(list);
lrcView.setCall(this);

try {
//从assets打开
AssetFileDescriptor fileDescriptor=getAssets().openFd("farawayfromhome.mp3");

mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(),fileDescriptor.getLength());
mediaPlayer.prepare();
mediaPlayer.start();
thread.start();
} catch (Exception e) {
// TODO: handle exception
}
}



//歌曲播放时,根据拖动跨越的行数里面的时间快进或快退带时间对应的播放进度

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android自定义View是指基于Android原生控件的一种扩展,可以根据自己的需求和设计规范来创建更加个性化和独特的控件。而歌词控件是一种针对音乐播放器或者视频播放器等应用场景中的需求,用于显示音乐或者视频的歌词的控件。 Android自定义View歌词控件的实现思路如下: 1. 首先需要自定义一个View,并继承自View或者其子类,如TextView。 2. 在自定义的View中重写onDraw方法,在其中实现绘制歌词的逻辑。 3. 在onDraw方法中,使用Canvas对象进行绘制,可以使用drawText方法绘制歌词文本,也可以使用drawBitmap方法绘制图片背景等。 4. 可以通过自定义属性,如字体大小、字体颜色、歌词滚动速度等,来对歌词控件进行配置。 5. 如果需要实现歌词滚动效果,可以使用ValueAnimator或者Scroller来实现歌词的平滑滚动。 6. 如果需要实现点击歌词跳转播放进度的功能,可以通过添加点击事件监听器,在触摸事件中判断点击位置对应的歌词行,并根据歌词的时间戳跳转到指定的播放进度。 总结来说,Android自定义View歌词控件的实现需要重写onDraw方法进行绘制,可以通过Canvas对象进行绘制文本或者图像,通过自定义属性进行配置,使用动画或者滚动实现歌词的平滑滚动,通过监听触摸事件实现点击歌词跳转播放进度的功能。通过以上步骤,我们可以创建一个个性化的歌词控件,满足不同应用场景的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值