用android studio写一个带进度条的简单音乐盒
时间: 2023-06-23 18:08:33 浏览: 63
好的,下面是一个简单的音乐盒的实现步骤:
1. 在 Android Studio 中创建一个新的项目,并添加音乐文件到项目中。可以将音乐文件放在 `res/raw` 目录下。
2. 在 `activity_main.xml` 布局文件中添加一个按钮和一个进度条。
```xml
<Button
android:id="@+id/button_play"
android:text="Play"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="0"
android:visibility="gone" />
```
3. 在 `MainActivity.java` 中定义一个 MediaPlayer 对象和一个 Handler 对象。
```java
private MediaPlayer mediaPlayer;
private Handler handler = new Handler();
```
4. 在按钮的点击事件中实现播放和暂停功能,并更新进度条进度。
```java
final Button buttonPlay = findViewById(R.id.button_play);
final ProgressBar progressBar = findViewById(R.id.progress_bar);
buttonPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer == null) {
mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.music);
}
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
buttonPlay.setText("Play");
handler.removeCallbacks(updateProgressBar);
} else {
mediaPlayer.start();
buttonPlay.setText("Pause");
progressBar.setVisibility(View.VISIBLE);
handler.postDelayed(updateProgressBar, 100);
}
}
});
Runnable updateProgressBar = new Runnable() {
@Override
public void run() {
int currentDuration = mediaPlayer.getCurrentPosition();
int totalDuration = mediaPlayer.getDuration();
int progress = (int)(((float)currentDuration / totalDuration) * 100);
progressBar.setProgress(progress);
if (mediaPlayer.isPlaying()) {
handler.postDelayed(this, 100);
}
}
};
```
5. 在 `onDestroy` 方法中释放 MediaPlayer 对象。
```java
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
```
这样就实现了一个简单的音乐盒,点击按钮可以播放和暂停音乐,并且显示进度条。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)