lmw
2024-07-16 c303346ae803dc2a89ec0f025192773211861915
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package com.dollearn.student.ui.home
 
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
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.StoryBean
import com.dollearn.student.network.request
import com.dollearn.student.ui.TransparentStatusBarActivity
import com.dollearn.student.utils.Const
import com.dollearn.student.utils.event.EmptyEvent
import kotlinx.android.synthetic.main.activity_listen_stroy.*
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.startActivity
 
class ListenStoryActivity:TransparentStatusBarActivity() {
    override fun setContentView() = R.layout.activity_listen_stroy
 
    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<StoryBean>("data") }
    val fragments    = arrayListOf<Fragment>()
 
    var totalCount = 0 //总答题次数
    var rightCount = 0 //正确答题次数
    var time = 0 //学习秒数
    private var handler:Handler? = null
 
    override fun initClick() {
        tv_last.setOnClickListener {
            if ((fragments[view_pager.currentItem] as RememberFragment).playing||!(fragments[view_pager.currentItem] as RememberFragment).listened)
                return@setOnClickListener
            (fragments[view_pager.currentItem-1] as RememberFragment).recover()
            view_pager.setCurrentItem(view_pager.currentItem-1,true)
            if (view_pager.currentItem == 0)
                tv_last.gone()
            tv_exit.text = "退出"
            tv_next.visible()
        }
        tv_next.setOnClickListener {
            if ((fragments[view_pager.currentItem] as RememberFragment).playing||!(fragments[view_pager.currentItem] as RememberFragment).listened)
                return@setOnClickListener
            (fragments[view_pager.currentItem+1] as RememberFragment).recover()
            view_pager.setCurrentItem(view_pager.currentItem+1,true)
            if (view_pager.currentItem == fragments.lastIndex){
                tv_next.gone()
                tv_exit.text = "完成"
            }
            tv_last.visible()
        }
 
        tv_exit.setOnClickListener {
            if (tv_exit.text == "退出")
                onBackPressed()
            else{
                if ((fragments[view_pager.currentItem] as RememberFragment).playing||!(fragments[view_pager.currentItem] as RememberFragment).listened)
                   return@setOnClickListener
                handler?.removeMessages(0)
                startActivity<RememberFinishActivity>("score" to data!!.data.integral,"time" to time,"id" to data!!.data.id)
                finish()
            }
        }
    }
 
    override fun initView() {
        data?.apply {
            tv_progress.text = "已完成:1/${storyList.size}"
            if (storyList.size == 1){
                tv_next.gone()
                tv_exit.text = "完成"
            }
            storyList.forEachIndexed { index, subject ->
                fragments.add(RememberFragment.getInstance(index))
            }
            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}/${storyList.size}"
                }
 
                override fun onPageScrollStateChanged(state: Int) {
                }
            })
        }
//        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)
    }
 
    override fun onBackPressed() {
        val tipDialog = TipDialog()
        tipDialog.arguments = bundleOf("msg" to "未完成全部答题,确认退出吗?")
        tipDialog.setCallback(object :TipDialog.OnClickCallback{
            override fun onOk() {
                HttpManager.exitGameOrStory(time).request(this@ListenStoryActivity){_,_->
                    finish()
                }
            }
 
            override fun onCancel() {
            }
        })
        tipDialog.show(supportFragmentManager,"exit")
    }
 
    override fun onDestroy() {
        super.onDestroy()
        handler?.removeMessages(0)
        handler = null
        EventBus.getDefault().post(EmptyEvent(Const.EventCode.STOP_TIMER))
    }
}