lmw
2024-07-09 b13afc751dbbce24753d008f1f87d2c5e133a4ad
app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt
@@ -4,16 +4,21 @@
import android.os.Looper
import android.os.Message
import android.util.Log
import android.view.View
import androidx.constraintlayout.motion.widget.MotionLayout
import androidx.core.os.bundleOf
import cn.sinata.xldutils.activity.ImagePagerActivity
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_include.*
import org.jetbrains.anko.support.v4.startActivity
class IncludeFragment : BaseFragment(), AudioUtils.OnAudioStatusUpdateListener {
    override fun contentViewId() = R.layout.fragment_include
@@ -23,6 +28,15 @@
    private var handler:Handler? = null
    private val PLAY_VOICE = 1
    private val TO_NEXT = 2
    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 val player by lazy { AudioUtils() }
    private val group by lazy { arguments?.getInt("group")?:0 }
@@ -39,6 +53,8 @@
    private val answerImg = arrayListOf<String>() //随机答案图片
    private var currentImage = 0 //当前作答的题号:2,4,5
    private var nowVoiceView: View? = null
    override fun onFirstVisibleToUser() {
        player.setOnAudioStatusUpdateListener(this)
        player.stopPlayMusic()
@@ -53,6 +69,14 @@
                        if (isAdded&&!playing){
                            (requireActivity() as IncludeActivity).next()
                        }
                    }
                    PLAY_RIGHT->{
                        rightPlaying = true
                        player.startPlayMusic(requireContext(),rightVoice)
                    }
                    PLAY_ERROR->{
                        errorPlaying = true
                        player.startPlayMusic(requireContext(),errorVoice)
                    }
                }
            }
@@ -104,11 +128,13 @@
            }
            act.totalCount++
            if (answerImg[0] == subject.img){
                nowVoiceView = voiceViews[currentImage]
                act.rightCount++
                data!!.subjectList[group][currentImage].completed = true
                voiceViews[currentImage].callOnClick()
                handler?.sendEmptyMessage(PLAY_RIGHT)
                motion.transitionToEnd()
                showResultAnim()
            }else{
                handler?.sendEmptyMessage(PLAY_ERROR)
                iv_error_1.visible()
                iv_error_1.postDelayed({
                    clearAnswerImg()
@@ -123,11 +149,16 @@
            if (!subject.listend||subject.completed){
                return@clickDelay
            }
            act.totalCount++
            if (answerImg[1] == subject.img){
                data!!.subjectList[group][currentImage].completed = true
                voiceViews[currentImage].callOnClick()
                nowVoiceView = voiceViews[currentImage]
                act.rightCount++
                handler?.sendEmptyMessage(PLAY_RIGHT)
                motion.transitionToEnd()
                showResultAnim()
            }else{
                handler?.sendEmptyMessage(PLAY_ERROR)
                iv_error_2.visible()
                iv_error_2.postDelayed({
                    clearAnswerImg()
@@ -142,17 +173,40 @@
            if (!subject.listend||subject.completed){
                return@clickDelay
            }
            act.totalCount++
            if (answerImg[2] == subject.img){
                data!!.subjectList[group][currentImage].completed = true
                voiceViews[currentImage].callOnClick()
                nowVoiceView = voiceViews[currentImage]
                act.rightCount++
                handler?.sendEmptyMessage(PLAY_RIGHT)
                motion.transitionToEnd()
                showResultAnim()
            }else{
                handler?.sendEmptyMessage(PLAY_ERROR)
                iv_error_3.visible()
                iv_error_3.postDelayed({
                    clearAnswerImg()
                },3000)
            }
        }
        iv_full_1.clickDelay {
            startActivity<ImagePagerActivity>("url" to arrayListOf(answerImg[0]))
        }
        iv_full_2.clickDelay {
            startActivity<ImagePagerActivity>("url" to arrayListOf(answerImg[1]))
        }
        iv_full_3.clickDelay {
            startActivity<ImagePagerActivity>("url" to arrayListOf(answerImg[2]))
        }
    }
    private fun showResultAnim(){
        val v = if (currentImage == 2) result_3 else if (currentImage == 4) result_5 else result_6
        v.visible()
        v.postDelayed({v.gone()},3000)
    }
    private fun showVoiceEnable(){
@@ -168,13 +222,19 @@
        }
    }
    /**
     * 答错后重置
     */
    private fun clearAnswerImg(){
        iv_answer_1.setImageURI("")
        iv_answer_2.setImageURI("")
        iv_answer_3.setImageURI("")
        iv_3.setImageURI("")
        iv_5.setImageURI("")
        iv_6.setImageURI("")
        if (currentImage == 2)
            iv_3.setImageURI("")
        if (currentImage == 4)
            iv_5.setImageURI("")
        if (currentImage == 5)
            iv_6.setImageURI("")
        iv_full_1.gone()
        iv_full_2.gone()
        iv_full_3.gone()
@@ -184,7 +244,24 @@
        data!!.subjectList[group][currentImage].listend = false
    }
    /**
     * 答对后的重置
     */
    private fun hideAnswerImg(){
        iv_answer_1.setImageURI("")
        iv_answer_2.setImageURI("")
        iv_answer_3.setImageURI("")
        iv_full_1.gone()
        iv_full_2.gone()
        iv_full_3.gone()
        iv_error_1.gone()
        iv_error_2.gone()
        iv_error_3.gone()
    }
    private fun showAnswerImg(){
        if (errorPlaying||rightPlaying)
            return
        answerImg.shuffle()
        iv_answer_1.setImageURI(answerImg[0])
        iv_answer_2.setImageURI(answerImg[1])
@@ -299,6 +376,8 @@
    override fun onStartPlay() {
        playing = true
        if (errorPlaying||rightPlaying)
            return
        when(voiceIndex){
            0->{
                iv1_1.gone()
@@ -357,6 +436,8 @@
                if (!subject.completed){
                    currentImage = 2
                    showAnswerImg()
                }else{
                    hideAnswerImg()
                }
            }
            3->{
@@ -371,6 +452,8 @@
                if (!subject.completed){
                    currentImage = 4
                    showAnswerImg()
                }else{
                    hideAnswerImg()
                }
            }
            5->{
@@ -381,11 +464,25 @@
                    currentImage = 5
                    showAnswerImg()
                }else{
                    hideAnswerImg()
                    Log.e(TAG,"本题全部答对,3秒后进入下一图")
                    handler?.sendEmptyMessageDelayed(TO_NEXT,3000)
                }
            }
        }
        showVoiceEnable()
        if (errorPlaying)
            errorPlaying = false
        if (rightPlaying) {
            rightPlaying = false
            data!!.subjectList[group][currentImage].completed = true
            nowVoiceView?.callOnClick()
        }
    }
    override fun onPause() {
        super.onPause()
        player.stopPlayMusic()
    }
}