From f84c51bb2f6be93b1ff6e48077316eaabd713d9f Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期五, 07 三月 2025 13:51:51 +0800 Subject: [PATCH] save --- app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt | 242 +++++++++++++++++++++++++++++++----------------- 1 files changed, 155 insertions(+), 87 deletions(-) diff --git a/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt index 7c1086e..c898449 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt @@ -9,10 +9,12 @@ import androidx.core.os.bundleOf import cn.sinata.xldutils.fragment.BaseFragment import cn.sinata.xldutils.gone +import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.visible import com.dollearn.student.R import com.dollearn.student.utils.AudioUtils +import com.dollearn.student.utils.Const import com.dollearn.student.utils.extention.clickDelay import kotlinx.android.synthetic.main.fragment_choose_voice.* import org.jetbrains.anko.backgroundResource @@ -27,6 +29,15 @@ private val PLAY_VOICE = 1 private val TO_NEXT = 10 + + private val PLAY_ERROR = 3 + private val PLAY_RIGHT = 4 + + private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) } + private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) } + + private var rightPlaying = false + private var errorPlaying = false private var voiceList = arrayListOf<String>() //本题音频,每题有3个音频 private val player by lazy { AudioUtils() } @@ -45,6 +56,10 @@ private val act by lazy { (requireActivity() as ChooseVoiceActivity) } + private var nowVoiceView:View? = null + + private val isShowText by lazy { SPUtils.instance().getBoolean(Const.IS_SHOW_TEXT,true) } + override fun onFirstVisibleToUser() { player.setOnAudioStatusUpdateListener(this) player.stopPlayMusic() @@ -58,6 +73,14 @@ TO_NEXT->{ if (isAdded&&!playing) (requireActivity() as ChooseVoiceActivity).next() + } + PLAY_RIGHT->{ + rightPlaying = true + player.startPlayMusic(requireContext(),rightVoice) + } + PLAY_ERROR->{ + errorPlaying = true + player.startPlayMusic(requireContext(),errorVoice) } } } @@ -96,59 +119,83 @@ } rl_check_1.clickDelay { - if (playing) + if (playing||data!!.subjectList[group].filter { it.completed }.size == data!!.subjectList[group].size) return@clickDelay - dot_1.visible() - act.totalCount++ - if (voiceList[0] == data!!.subjectList[group][currentIndex].correct){ - act.rightCount++ - data!!.subjectList[group][currentIndex].completed = true - motion.transitionToEnd() - cl_voice1.callOnClick() - }else{ - iv_error_1.visible() - dot_1.postDelayed({ - iv_error_1.gone() - dot_1.gone() - },2000) - } + if (rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE){ + dot_1.visible() + act.totalCount++ + if (voiceList[0] == data!!.subjectList[group][currentIndex].correct){ + act.rightCount++ + motion.transitionToEnd() + nowVoiceView = cl_voice1 + handler?.sendEmptyMessage(PLAY_RIGHT) + }else{ + handler?.sendEmptyMessage(PLAY_ERROR) + iv_error_1.visible() + dot_1.postDelayed({ + iv_error_1.gone() + dot_1.gone() + rl_check_1.gone() + rl_check_2.gone() + rl_check_3.gone() + },2000) + } + }else + myToast("请听完题") } rl_check_2.clickDelay { - if (playing) + if (playing||data!!.subjectList[group].filter { it.completed }.size == data!!.subjectList[group].size) return@clickDelay - dot_2.visible() - act.totalCount++ - if (voiceList[1] == data!!.subjectList[group][currentIndex].correct){ - act.rightCount++ - data!!.subjectList[group][currentIndex].completed = true - motion.transitionToEnd() - cl_voice2.callOnClick() - }else{ - iv_error_2.visible() - dot_1.postDelayed({ - dot_2.gone() - iv_error_2.gone() - },2000) - } + if (rl_check_1.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) { + dot_2.visible() + act.totalCount++ + if (voiceList[1] == data!!.subjectList[group][currentIndex].correct){ + act.rightCount++ + motion.transitionToEnd() + nowVoiceView = cl_voice2 + handler?.sendEmptyMessage(PLAY_RIGHT) + }else{ + + handler?.sendEmptyMessage(PLAY_ERROR) + iv_error_2.visible() + dot_1.postDelayed({ + dot_2.gone() + iv_error_2.gone() + rl_check_1.gone() + rl_check_2.gone() + rl_check_3.gone() + },2000) + } + }else + myToast("请听完题") + } rl_check_3.clickDelay { - if (playing) + if (playing||data!!.subjectList[group].filter { it.completed }.size == data!!.subjectList[group].size) return@clickDelay - dot_3.visible() - act.totalCount++ - if (voiceList[2] == data!!.subjectList[group][currentIndex].correct){ - data!!.subjectList[group][currentIndex].completed = true - act.rightCount++ - motion.transitionToEnd() - cl_voice3.callOnClick() - }else{ - iv_error_3.visible() - dot_1.postDelayed({ - iv_error_3.gone() - dot_3.gone() - },2000) - } + if (rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) { + dot_3.visible() + act.totalCount++ + if (voiceList[2] == data!!.subjectList[group][currentIndex].correct){ + act.rightCount++ + nowVoiceView = cl_voice3 + handler?.sendEmptyMessage(PLAY_RIGHT) + motion.transitionToEnd() + }else{ + handler?.sendEmptyMessage(PLAY_ERROR) + iv_error_3.visible() + dot_1.postDelayed({ + iv_error_3.gone() + dot_3.gone() + rl_check_1.gone() + rl_check_2.gone() + rl_check_3.gone() + },2000) + } + }else + myToast("请听完题") + } cl_voice_end_1.clickDelay { @@ -198,15 +245,16 @@ val shuffledList = list.shuffled() voiceList.clear() voiceList.addAll(shuffledList) - nameViews.forEachIndexed { index, textView -> - if (index == currentIndex){ - textView.text = originList[index].name - textView.backgroundResource = R.color.textColor99 - }else{ - textView.text = "" - textView.backgroundResource = R.color.page_bg + if (isShowText) + nameViews.forEachIndexed { index, textView -> + if (index == currentIndex){ + textView.text = originList[index].name + textView.backgroundResource = R.color.textColor99 + }else{ + textView.text = "" + textView.backgroundResource = R.color.page_bg + } } - } //设置动画飞行路径 3对4 val rightVoiceIndex = voiceList.indexOf(imageNow.correct) var start = 0 @@ -292,40 +340,42 @@ override fun onStartPlay() { playing = true - if (voiceIndex == 0){ - iv1_1.gone() - iv2_1.gone() - iv_playing_1.visible() - } - if (voiceIndex == 1){ - iv1_2.gone() - iv2_2.gone() - iv_playing_2.visible() - } - if (voiceIndex == 2){ - iv1_3.gone() - iv2_3.gone() - iv_playing_3.visible() - } - if (voiceIndex == 3){ - iv1_1_end.gone() - iv2_1_end.gone() - iv_playing_1_end.visible() - } - if (voiceIndex == 4){ - iv1_2_end.gone() - iv2_2_end.gone() - iv_playing_2_end.visible() - } - if (voiceIndex == 5){ - iv1_3_end.gone() - iv2_3_end.gone() - iv_playing_3_end.visible() - } - if (voiceIndex == 6){ - iv1_4_end.gone() - iv2_4_end.gone() - iv_playing_4_end.visible() + if (!errorPlaying&&!rightPlaying){ + if (voiceIndex == 0){ + iv1_1.gone() + iv2_1.gone() + iv_playing_1.visible() + } + if (voiceIndex == 1){ + iv1_2.gone() + iv2_2.gone() + iv_playing_2.visible() + } + if (voiceIndex == 2){ + iv1_3.gone() + iv2_3.gone() + iv_playing_3.visible() + } + if (voiceIndex == 3){ + iv1_1_end.gone() + iv2_1_end.gone() + iv_playing_1_end.visible() + } + if (voiceIndex == 4){ + iv1_2_end.gone() + iv2_2_end.gone() + iv_playing_2_end.visible() + } + if (voiceIndex == 5){ + iv1_3_end.gone() + iv2_3_end.gone() + iv_playing_3_end.visible() + } + if (voiceIndex == 6){ + iv1_4_end.gone() + iv2_4_end.gone() + iv_playing_4_end.visible() + } } } @@ -379,5 +429,23 @@ showSubImage() } } + + if (rightPlaying){ + rightPlaying = false + data!!.subjectList[group][currentIndex].completed = true + nowVoiceView?.callOnClick() + } + if (errorPlaying) + errorPlaying = false + } + + override fun onPause() { + super.onPause() + player.stopPlayMusic() + } + + override fun onDestroy() { + super.onDestroy() + handler?.removeCallbacksAndMessages(null) } } \ No newline at end of file -- Gitblit v1.7.1