lmw
2024-08-01 a036ac0c6c8d87f36e68f88f05231c3be23fcc4b
app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt
@@ -2,6 +2,7 @@
import android.annotation.SuppressLint
import android.os.Handler
import android.os.Looper
import android.os.Message
import android.view.ViewGroup
import androidx.core.os.bundleOf
@@ -14,20 +15,39 @@
import com.dollearn.student.dialog.TipDialog
import com.dollearn.student.network.HttpManager
import com.dollearn.student.network.entity.SubjectBean
import com.dollearn.student.network.request
import com.dollearn.student.ui.TransparentStatusBarActivity
import com.dollearn.student.utils.AudioUtils
import com.dollearn.student.utils.Const
import com.dollearn.student.utils.event.EmptyEvent
import kotlinx.android.synthetic.main.activity_listen.*
import org.greenrobot.eventbus.EventBus
class ListenActivity:TransparentStatusBarActivity() {
    override fun setContentView() = R.layout.activity_listen
    private val day by lazy {
        intent.getIntExtra("day",0)
    }
    private val week by lazy {
        intent.getIntExtra("week",0)
    }
    private val season by lazy {
        intent.getIntExtra("season",0)
    }
    val data by lazy { intent.getParcelableExtra<SubjectBean>("data") }
    private val fragments    = arrayListOf<Fragment>()
    val fragments    = arrayListOf<Fragment>()
    val viewPager by lazy { view_pager }
    var totalCount = 0 //总答题次数
    var rightCount = 0 //正确答题次数
    var time = 0 //学习秒数
    private var handler:Handler? = null
    override fun initClick() {
        tv_last.setOnClickListener {
            (fragments[view_pager.currentItem-1] as ListenFragment).recover()
            view_pager.setCurrentItem(view_pager.currentItem-1,true)
            val i = view_pager.currentItem - 1
            (fragments[i] as ListenFragment).recover()
            view_pager.setCurrentItem(i,i%4 == 0)
            if (view_pager.currentItem == 0)
                tv_last.gone()
        }
@@ -38,9 +58,16 @@
    }
    fun next(){
        (fragments[view_pager.currentItem+1] as ListenFragment).recover()
        view_pager.setCurrentItem(view_pager.currentItem+1,true)
        tv_last.visible()
        if (view_pager.currentItem == fragments.lastIndex){
            handler?.removeMessages(0)
            ResultActivity.startResult(this,day,week,season,1,totalCount,rightCount,data!!.data.integral,time,data!!.data.id)
            finish()
        }else{
            val i = view_pager.currentItem + 1
            (fragments[i] as ListenFragment).recover()
            view_pager.setCurrentItem(i,i%4 == 0)
            tv_last.visible()
        }
    }
    override fun initView() {
@@ -81,6 +108,27 @@
                }
            })
        }
        recover()
        handler= object :Handler(Looper.myLooper()!!){
            override fun handleMessage(msg: Message) {
                super.handleMessage(msg)
                if (msg.what == 0){
                    time++
                    handler?.sendEmptyMessageDelayed(0,1000L)
                }
            }
        }
        handler?.sendEmptyMessageDelayed(0,1000L)
    }
    private fun recover(){
        HttpManager.teamSchedule(day,week,1).request(this){_,data->
            view_pager.setCurrentItem((data?.schedule?:1)-1,false)
            if (view_pager.currentItem != 0)
                tv_last.visible()
            totalCount = data?.answerNumber?:0
            rightCount = data?.correctNumber?:0
        }
    }
    override fun onBackPressed() {
@@ -88,7 +136,10 @@
        tipDialog.arguments = bundleOf("msg" to "未完成全部答题,确认退出吗?")
        tipDialog.setCallback(object :TipDialog.OnClickCallback{
            override fun onOk() {
                HttpManager.exitLearning()
                val list = (data?.subjectList?: arrayListOf()).flatMap { it }.subList(0,view_pager.currentItem)
                HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,1,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@ListenActivity){_,_->
                    finish()
                }
            }
            override fun onCancel() {
@@ -96,4 +147,11 @@
        })
        tipDialog.show(supportFragmentManager,"exit")
    }
    override fun onDestroy() {
        super.onDestroy()
        handler?.removeMessages(0)
        handler = null
        EventBus.getDefault().post(EmptyEvent(Const.EventCode.STOP_TIMER))
    }
}