package com.dollearn.student
|
|
import android.annotation.SuppressLint
|
import android.os.Handler
|
import android.os.Looper
|
import android.os.Message
|
import android.util.Log
|
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.FragmentPagerAdapter
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.SPUtils
|
import com.flyco.tablayout.listener.CustomTabEntity
|
import com.flyco.tablayout.listener.OnTabSelectListener
|
import com.github.zackratos.ultimatebar.UltimateBar
|
import com.dollearn.student.network.HttpManager
|
import com.dollearn.student.network.entity.UserBean
|
import com.dollearn.student.network.request
|
import com.dollearn.student.ui.TransparentStatusBarActivity
|
import com.dollearn.student.ui.home.HomeFragment
|
import com.dollearn.student.ui.shop.ShopFragment
|
import com.dollearn.student.ui.mine.MineFragment
|
import com.dollearn.student.utils.Const
|
import com.dollearn.student.utils.event.EmptyEvent
|
import kotlinx.android.synthetic.main.activity_main.*
|
import kotlinx.android.synthetic.main.fragment_shop.*
|
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.Subscribe
|
|
class MainActivity : TransparentStatusBarActivity(), OnTabSelectListener{
|
override fun setContentView() = R.layout.activity_main
|
|
private val fragments = arrayListOf<Fragment>()
|
var homeData: UserBean? = null //个人信息
|
var score = 0
|
private var handler: Handler? = null
|
|
override fun initClick() {
|
}
|
|
override fun initView() {
|
titleBar.gone()
|
bg_title.gone()
|
UltimateBar.with(this@MainActivity)
|
.statusDark(true)
|
.create().immersionBar() //沉浸状态栏
|
initTab()
|
EventBus.getDefault().register(this)
|
getData()
|
getVoiceUrl()
|
getScoreConfig()
|
}
|
|
private fun getScoreConfig() {
|
HttpManager.onlineDuration().request(this,false,{_,data->
|
SPUtils.instance().put(Const.SCORE_DURATION,(data?:"0").toInt()).apply()
|
startTimer()
|
}){_,_->
|
startTimer()
|
}
|
}
|
|
private fun startTimer() {
|
val duration = SPUtils.instance().getInt(Const.SCORE_DURATION,30)//单位分钟
|
var mins = 0
|
handler = object :Handler(Looper.myLooper()!!){
|
override fun handleMessage(msg: Message) {
|
super.handleMessage(msg)
|
if (msg.what == 0){
|
mins++
|
Log.e("mmp","当前已在线${mins}分钟")
|
if (mins > duration){
|
HttpManager.giveIntegral().request(this@MainActivity,false,{_,_->
|
mins = 0
|
handler?.sendEmptyMessageDelayed(0,1000*60)
|
}){_,_->
|
handler?.sendEmptyMessageDelayed(0,1000*60)
|
}
|
}else
|
handler?.sendEmptyMessageDelayed(0,1000*60)
|
}
|
}
|
}
|
handler?.sendEmptyMessageDelayed(0,1000*60)
|
}
|
|
private fun getVoiceUrl() {
|
HttpManager.promptVoice().request(this,false){_,data->
|
if (!data?.correct.isNullOrEmpty())
|
SPUtils.instance().put(Const.RV,data?.correct?:"").apply()
|
if (!data?.error.isNullOrEmpty())
|
SPUtils.instance().put(Const.EV,data?.error?:"").apply()
|
}
|
}
|
|
private fun initTab() {
|
val titles = arrayListOf("首页","商城","我的")
|
val iconChecked = arrayListOf(
|
R.mipmap.home_selected,
|
R.mipmap.shangcheng_selected,
|
R.mipmap.mine_selected
|
)
|
val iconUnchecked = arrayListOf(
|
R.mipmap.home,
|
R.mipmap.shangcheng,
|
R.mipmap.mine
|
)
|
fragments.add(HomeFragment())
|
fragments.add(ShopFragment())
|
fragments.add(MineFragment())
|
view_pager.offscreenPageLimit = fragments.size
|
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
|
}
|
}
|
val tabs = arrayListOf<CustomTabEntity>()
|
(0 until fragments.size).forEach {
|
tabs.add(object : CustomTabEntity {
|
override fun getTabUnselectedIcon() = iconUnchecked[it]
|
|
override fun getTabSelectedIcon() = iconChecked[it]
|
|
override fun getTabTitle() = titles[it]
|
})
|
}
|
tab_bar.setTabData(tabs)
|
tab_bar.setOnTabSelectListener(this)
|
}
|
|
fun switchHome(){
|
tab_bar.currentTab = 0
|
onTabSelect(0)
|
}
|
override fun onTabSelect(position: Int) {
|
view_pager.currentItem = position
|
}
|
|
override fun onTabReselect(position: Int) {
|
}
|
|
@Subscribe
|
fun onSwitch(e:EmptyEvent){
|
if (e.code == Const.EventCode.CLICK_GAME_ITEM){
|
switchHome()
|
}else if(e.code == Const.EventCode.CHANGE_WELFARE){
|
tab_bar.currentTab = 2
|
onTabSelect(2)
|
}else if(e.code == Const.EventCode.CHANGE_EXPLORE){
|
tab_bar.currentTab = 3
|
onTabSelect(3)
|
}
|
}
|
|
@Subscribe
|
fun refreshUser(e:EmptyEvent){
|
if (e.code == Const.EventCode.REFRESH_USER)
|
getData()
|
if (e.code == Const.EventCode.SCORE_CHANGED)
|
getScore()
|
}
|
|
private fun getData() {
|
HttpManager.userDetails().request(this){_,data->
|
homeData = data
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER_INFO))
|
if (score == 0){
|
score = homeData?.user?.integral?:0
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_SCORE))
|
}
|
}
|
}
|
|
private fun getScore() {
|
HttpManager.getIntegralStudy().request(this){_,data->
|
score = data?:0
|
homeData?.user?.integral = score
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_SCORE))
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER_INFO))
|
}
|
}
|
|
override fun onResume() {
|
super.onResume()
|
if (tab_bar.currentTab == 1)
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_COURSDATA))
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
EventBus.getDefault().unregister(this)
|
handler?.removeCallbacksAndMessages(null)
|
handler = null
|
}
|
}
|