diff --git a/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt index e9833f3..60ac2a9 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt @@ -396,7 +396,7 @@ class TaskListFragment : BaseFragment() { /** * 显示语音播放按钮(用户上报任务 taskType=3/4 可能有语音附件) - * 点击播放/暂停语音 + * 点击切换播放/停止,图标和背景跟随状态变化 */ private fun showVoice(detail: TaskDetail) { if (!detail.hasVoice) return @@ -405,8 +405,10 @@ class TaskListFragment : BaseFragment() { if (voiceItem.url.isEmpty()) return // 显示按钮和时长 - binding.tvVoiceDuration.text = "${voiceItem.voiceLength}\"" + binding.tvVoiceDuration.text = "${voiceItem.voiceLength}\u2033" binding.btnVoice.visibility = View.VISIBLE + // 初始化为未播放状态 + updateVoiceUI(false) // 点击播放/停止 binding.btnVoice.setOnClickListener { @@ -414,14 +416,24 @@ class TaskListFragment : BaseFragment() { } } + /** 更新语音按钮的图标和背景 */ + private fun updateVoiceUI(playing: Boolean) { + if (playing) { + binding.tvVoiceIcon.text = "\u23F9" // ⏹ 停止图标 + binding.btnVoice.setBackgroundResource(R.drawable.bg_btn_voice_playing) + } else { + binding.tvVoiceIcon.text = "\uD83D\uDD0A" // 🔊 喇叭图标 + binding.btnVoice.setBackgroundResource(R.drawable.bg_btn_voice) + } + } + /** 播放/停止语音 */ private fun toggleVoice(url: String) { if (mediaPlayer?.isPlaying == true) { - // 正在播放 → 停止 stopVoice() } else { - // 没有播放 → 开始 stopVoice() // 清理上一个 + updateVoiceUI(true) mediaPlayer = MediaPlayer().apply { setDataSource(url) setOnPreparedListener { start() } @@ -436,13 +448,17 @@ class TaskListFragment : BaseFragment() { } } - /** 停止并释放 MediaPlayer */ + /** 停止并释放 MediaPlayer,恢复按钮状态 */ private fun stopVoice() { mediaPlayer?.let { if (it.isPlaying) it.stop() it.release() } mediaPlayer = null + // 恢复未播放状态(页面销毁时 binding 可能已失效) + if (view != null) { + updateVoiceUI(false) + } } /** diff --git a/app/src/main/res/drawable/bg_btn_voice.xml b/app/src/main/res/drawable/bg_btn_voice.xml index 503f853..23a70ce 100644 --- a/app/src/main/res/drawable/bg_btn_voice.xml +++ b/app/src/main/res/drawable/bg_btn_voice.xml @@ -1,16 +1,18 @@ - + - - + + + - - + + + diff --git a/app/src/main/res/drawable/bg_btn_voice_playing.xml b/app/src/main/res/drawable/bg_btn_voice_playing.xml new file mode 100644 index 0000000..33c73e5 --- /dev/null +++ b/app/src/main/res/drawable/bg_btn_voice_playing.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/layout/fragment_task_list.xml b/app/src/main/res/layout/fragment_task_list.xml index 79916c2..c8816eb 100644 --- a/app/src/main/res/layout/fragment_task_list.xml +++ b/app/src/main/res/layout/fragment_task_list.xml @@ -134,35 +134,44 @@ android:layout_marginBottom="11dp" android:visibility="gone" /> - + - + + android:text="🔊" + android:textSize="26sp" /> + + + + android:textColor="@color/text_secondary" + android:textSize="22sp" />