本人菜鸟一枚,在编写android中用seekbar控件控制歌曲的进度和seekbar随着歌曲的播放自动运动的程序有一些自己的见解,希望各位大牛们多多指点······

废话先不多说了,先贴一张程序的图吧:

界面不怎么好看,没经过美化,大家将就这看一下吧。

主要思路是运用线程每隔一秒显示一下seekbar控件所在的位置,(这个是使进度条随着歌曲的进度而不断的变化,如果大家想使进度条增加的更连续,可以改变程序循环运行的时间,使其更快)

我只把关于seekbar的程度拿出来了:

private int position=0;//媒体音乐所播放的位置

private SeekBar seekbar;

public Handler seekbarhandler=null;
public SeekbarThread seekbarthread=null;

//首先定义thread方法。

seekbarthread=new SeekbarThread();

public class SeekbarThread extends Thread {
private SeekBar seekbar;
public void run(){
Message message=new Message();
message.what=1;
seekbarhandler.sendMessage(message);
}

}

//定义handler处理事件

seekbarhandler=new Handler(){
public void handleMessage(Message msg){
super.handleMessage(msg);
if(msg.what==1){
seekbar.setProgress((int)(((double)mediaplayer.getCurrentPosition()/mediaplayer.getDuration())*100));
seekbarhandler.postDelayed(seekbarthread, 1000);

}
}
};

//对于seekbar事件的定义和监听事件:

seekbar=(SeekBar)findViewById(R.id.seekbar1);

seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {//数值的改变
position=arg1;
mediaplayer.start();

}

@Override
public void onStartTrackingTouch(SeekBar arg0) {//开始拖动

}

@Override
public void onStopTrackingTouch(SeekBar arg0) {//停止拖动
mediaplayer.seekTo((int)(((double)position/100)*mediaplayer.getDuration()));//seekbar最大值默认为100,所以这里用100,但是这样使取值不是特别精确,我没想出

//其他的什么办法解决,使其更精确,所以暂时只能用这样的方法。
}

});

基本上的使用方法就是这样,第一次写博客,哪里有不好的地方请大家多提提意见,以后慢慢改正。

更多相关文章

  1. 【优才原创】Android的拖放机制
  2. Android(安卓)button自定义显示
  3. Android(安卓)自定义PopupWindow实现的Menu(TabMenu)
  4. Android:Layouts介绍
  5. Android自定义相机镂空遮罩
  6. [置顶] 我的Android进阶之旅------>Android中解析XML 技术详解--
  7. android进度条修改教程(颜色,高度)
  8. 为什么自定义ViewGroup ondraw方法不会被调用
  9. [android]android中的资源与国际化

随机推荐

  1. SQL和NoSQL之间的区别总结
  2. mysql蠕虫复制基础知识点
  3. Mysql数据表中的蠕虫复制使用方法
  4. MySQL limit性能分析与优化
  5. MySQL和Redis实现二级缓存的方法详解
  6. MySQL普通索引和唯一索引的深入讲解
  7. 使用MySQL的geometry类型处理经纬度距离
  8. mysql binlog(二进制日志)查看方法
  9. mysql导出表的字段和相关属性的步骤方法
  10. MySQL线程处于Opening tables的问题解决