lmw
2024-06-16 03172fc2d9a7717f4a9d8de1c5eca3158a550b30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package com.dollearn.student.ui.home
 
import android.annotation.SuppressLint
import android.os.Handler
import android.os.Message
import android.view.ViewGroup
import androidx.core.os.bundleOf
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentPagerAdapter
import androidx.viewpager.widget.ViewPager
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.visible
import com.dollearn.student.R
import com.dollearn.student.dialog.TipDialog
import com.dollearn.student.network.HttpManager
import com.dollearn.student.network.entity.SubjectBean
import com.dollearn.student.ui.TransparentStatusBarActivity
import com.dollearn.student.utils.AudioUtils
import kotlinx.android.synthetic.main.activity_listen.*
 
class ListenActivity:TransparentStatusBarActivity() {
    override fun setContentView() = R.layout.activity_listen
 
    val data by lazy { intent.getParcelableExtra<SubjectBean>("data") }
    private val fragments    = arrayListOf<Fragment>()
 
    override fun initClick() {
        tv_last.setOnClickListener {
            (fragments[view_pager.currentItem-1] as ListenFragment).recover()
            view_pager.setCurrentItem(view_pager.currentItem-1,true)
            if (view_pager.currentItem == 0)
                tv_last.gone()
        }
 
        tv_exit.setOnClickListener {
            onBackPressed()
        }
    }
 
    fun next(){
        (fragments[view_pager.currentItem+1] as ListenFragment).recover()
        view_pager.setCurrentItem(view_pager.currentItem+1,true)
        tv_last.visible()
    }
 
    override fun initView() {
        data?.apply {
            val flatMap = subjectList?.flatMap { it }
            tv_progress.text = "已完成:1/${flatMap.size}"
            flatMap.forEachIndexed { index, subject ->
                fragments.add(ListenFragment.getInstance(index/4,index%4))
            }
            view_pager.adapter = @SuppressLint("WrongConstant")
            object : FragmentPagerAdapter(supportFragmentManager,0) {
                override fun getItem(p0: Int): Fragment {
                    return fragments[p0]
                }
 
                override fun getCount(): Int {
                    return fragments.size
                }
 
                override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
                }
            }
            view_pager.offscreenPageLimit = fragments.size
            view_pager.addOnPageChangeListener(object :ViewPager.OnPageChangeListener{
                override fun onPageScrolled(
                    position: Int,
                    positionOffset: Float,
                    positionOffsetPixels: Int
                ) {
 
                }
 
                override fun onPageSelected(position: Int) {
                    tv_progress.text = "已完成:${position+1}/${flatMap.size}"
                }
 
                override fun onPageScrollStateChanged(state: Int) {
                }
            })
        }
    }
 
    override fun onBackPressed() {
        val tipDialog = TipDialog()
        tipDialog.arguments = bundleOf("msg" to "未完成全部答题,确认退出吗?")
        tipDialog.setCallback(object :TipDialog.OnClickCallback{
            override fun onOk() {
                HttpManager.exitLearning()
            }
 
            override fun onCancel() {
            }
        })
        tipDialog.show(supportFragmentManager,"exit")
    }
}