From aa512ff5fc428fbee046d6bc0761c3675023769e Mon Sep 17 00:00:00 2001
From: 罗明文 <125975490@qq.com>
Date: 星期三, 21 五月 2025 15:49:32 +0800
Subject: [PATCH] save
---
app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt | 83 +++++++++++++++++++++++++++++------------
1 files changed, 58 insertions(+), 25 deletions(-)
diff --git a/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt
index ab2bb3c..1242aca 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt
@@ -71,6 +71,11 @@
private var nowVoiceView: View? = null
+ private var isAutoPlaying = 0
+
+ var right = true //true进入下一题为全对,false 一旦答错过就置为false,此时进入下一题,本题算做错误
+
+
override fun onFirstVisibleToUser() {
player.setOnAudioStatusUpdateListener(this)
player.stopPlayMusic()
@@ -120,13 +125,15 @@
act.rightCount++
Log.e(TAG,"选择正确")
transAnimation(cl_answer_1,voiceViews[questionIndex])
- resultViews[questionIndex].visible()
- resultViews[questionIndex].postDelayed({
- resultViews[questionIndex].gone()
- },3000)
+ val resultView = resultViews[questionIndex]
+ resultView.visible()
+ resultView.postDelayed({
+ resultView.gone()
+ },2000)
nowVoiceView = voiceViews[questionIndex]
handler?.sendEmptyMessage(PLAY_RIGHT)
}else{
+ right = false
recoverAnswer()
handler?.sendEmptyMessage(PLAY_ERROR)
dot_1.visible()
@@ -134,7 +141,7 @@
dot_1.postDelayed({
dot_1.gone()
iv_error_1.gone()
- },3000)
+ },2000)
}
}
rl_check_2.clickDelay {
@@ -151,10 +158,11 @@
act.rightCount++
Log.e(TAG,"选择正确")
transAnimation(cl_answer_2,voiceViews[questionIndex])
- resultViews[questionIndex].visible()
- resultViews[questionIndex].postDelayed({
- resultViews[questionIndex].gone()
- },3000)
+ val resultView = resultViews[questionIndex]
+ resultView.visible()
+ resultView.postDelayed({
+ resultView.gone()
+ },2000)
nowVoiceView = voiceViews[questionIndex]
handler?.sendEmptyMessage(PLAY_RIGHT)
}else{
@@ -165,7 +173,7 @@
dot_2.postDelayed({
dot_2.gone()
iv_error_2.gone()
- },3000)
+ },2000)
}
}
rl_check_3.clickDelay {
@@ -182,10 +190,11 @@
act.rightCount++
Log.e(TAG,"选择正确")
transAnimation(cl_answer_3,voiceViews[questionIndex])
- resultViews[questionIndex].visible()
- resultViews[questionIndex].postDelayed({
- resultViews[questionIndex].gone()
- },3000)
+ val resultView = resultViews[questionIndex]
+ resultView.visible()
+ resultView.postDelayed({
+ resultView.gone()
+ },2000)
nowVoiceView = voiceViews[questionIndex]
handler?.sendEmptyMessage(PLAY_RIGHT)
}else{
@@ -196,9 +205,15 @@
dot_3.postDelayed({
dot_3.gone()
iv_error_3.gone()
- },3000)
+ },2000)
}
}
+
+ isAutoPlaying = 1
+ voiceViews.filterIndexed { index, constraintLayout ->
+ val subject = list[index]
+ constraintLayout.isEnabled&&subject.isQuestion == 1
+ }.firstOrNull()?.callOnClick()
}
@@ -206,6 +221,7 @@
* 恢复答案和题目ui
*/
fun recover(){
+ right = true
showVoiceUi()
list.forEach { it.completed = false }
recoverAnswer()
@@ -258,13 +274,13 @@
}
questionIndex = position
if (questionIndex == 0||questionIndex == 2){
- iv2_answer_1.setImageResource(R.mipmap.voice_question)
- iv2_answer_2.setImageResource(R.mipmap.voice_question)
- iv2_answer_3.setImageResource(R.mipmap.voice_question)
+ iv2_answer_1.setImageResource(R.mipmap.voice_question_2)
+ iv2_answer_2.setImageResource(R.mipmap.voice_question_2)
+ iv2_answer_3.setImageResource(R.mipmap.voice_question_2)
}else{
- iv2_answer_1.setImageResource(R.mipmap.voice_answer)
- iv2_answer_2.setImageResource(R.mipmap.voice_answer)
- iv2_answer_3.setImageResource(R.mipmap.voice_answer)
+ iv2_answer_1.setImageResource(R.mipmap.voice_answer_2)
+ iv2_answer_2.setImageResource(R.mipmap.voice_answer_2)
+ iv2_answer_3.setImageResource(R.mipmap.voice_answer_2)
}
rl_check_1.visible()
rl_check_2.visible()
@@ -303,7 +319,7 @@
val x = PropertyValuesHolder.ofFloat("translationX",0f,offx.toFloat())
val y = PropertyValuesHolder.ofFloat("translationY",0f,offy.toFloat())
val animator = ObjectAnimator.ofPropertyValuesHolder(v, x, y)
- animator.duration = 1000
+ animator.duration = 500
animator.interpolator = LinearInterpolator()
animator.start()
animator.addListener(object :Animator.AnimatorListener{
@@ -390,16 +406,33 @@
}
}
- if (list.filter { it.completed }.size == 2){ //全部作答,3秒后下一题
- handler?.sendEmptyMessageDelayed(TO_NEXT,3000)
+ if (isAutoPlaying in 1..2){
+ if (voiceIndex in 0..3){
+ cl_answer_1.callOnClick()
+ }else if (voiceIndex == 4)
+ cl_answer_2.callOnClick()
+ else if (voiceIndex == 5)
+ cl_answer_3.callOnClick()
+ else if (voiceIndex == 6){
+ isAutoPlaying = if (isAutoPlaying == 1) 0 else -1
+ }
}
+
if (errorPlaying)
errorPlaying = false
- if (rightPlaying){
+ else if (rightPlaying){
rightPlaying = false
nowVoiceView?.callOnClick()
list[questionIndex].completed = true
recoverAnswer()
+ }else if (list.filter { it.completed }.size == 2){ //全部作答,3秒后下一题
+ handler?.sendEmptyMessageDelayed(TO_NEXT,500) //万俊杰:缩短为0.5秒
+ }else if (list.filter { it.completed }.size == 1&& isAutoPlaying == 0){//答完一题,自动播放下一题
+ isAutoPlaying = 2
+ voiceViews.filterIndexed { index, constraintLayout ->
+ val subject = list[index]
+ constraintLayout.isEnabled&&subject.isQuestion == 1
+ }.lastOrNull()?.callOnClick()
}
}
--
Gitblit v1.7.1