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))
|
}
|
}
|