lmw
2025-04-03 8d72ec1b07a4fe0863b41b1140a8c0e679867b93
app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt
@@ -9,7 +9,6 @@
import cn.sinata.xldutils.visible
import com.google.android.exoplayer2.upstream.DataSpec
import com.google.android.exoplayer2.upstream.RawResourceDataSource
import com.sinata.xqmuse.MainActivity
import com.sinata.xqmuse.R
import com.sinata.xqmuse.ThinkAudioService
import com.sinata.xqmuse.network.HttpManager
@@ -24,6 +23,7 @@
import com.sinata.xqmuse.ui.login.LoginActivity
import com.sinata.xqmuse.ui.mine.VipActivity
import com.sinata.xqmuse.utils.Const
import com.sinata.xqmuse.utils.cache.ProxyVideoCacheManager
import com.sinata.xqmuse.utils.event.EmptyEvent
import com.sinata.xqmuse.utils.interfaces.StringCallback
import kotlinx.android.synthetic.main.fragment_home.*
@@ -38,13 +38,13 @@
    private val topMenuAdapter = TopMenuAdapter(topMenu)
    private var today:HomeItem? = null //今日冥想
    private val privacy = arrayListOf<CommonItemBean>() //私人订制
    private val privacyAdapter by lazy { HomeBannerAdapter(privacy,requireContext()) }
    private val privacyAdapter by lazy { HomeBannerAdapter(privacy, requireContext()) }
    private val list = arrayListOf<HomeListBean>()
    private val adapter = HomeAdapter(list)
    override fun onFirstVisibleToUser() {
        rv_menu.layoutManager = GridLayoutManager(requireContext(),4)
        rv_menu.layoutManager = GridLayoutManager(requireContext(), 4)
        rv_menu.adapter = topMenuAdapter
        banner_privacy.adapter = privacyAdapter
        rv_list.layoutManager = LinearLayoutManager(requireContext())
@@ -52,10 +52,12 @@
        adapter.callback = object :StringCallback{
            override fun onResult(rst: String) {
                showDialog()
                HttpManager.getMeditationDetails(rst).requestByF(this@HomeFragment,success = {_,data->
                    dismissDialog()
                    data?.goDetail(requireContext())
                }){_,_->
                HttpManager.getMeditationDetails(rst).requestByF(
                    this@HomeFragment,
                    success = { _, data ->
                        dismissDialog()
                        data?.goDetail(requireContext())
                    }){ _, _->
                    dismissDialog()
                }
            }
@@ -85,7 +87,7 @@
        tv_3.setOnClickListener {
            HttpManager.getH5(4).requestByF(this){ _, data->
                data?.let {
                    startActivity<H5Activity>("title" to "新手冥想指南","url" to it.content)
                    startActivity<H5Activity>("title" to "新手冥想指南", "url" to it.content)
                }
            }
        }
@@ -96,12 +98,18 @@
            startActivity<BGMSettingActivity>()
        }
        topMenuAdapter.setOnItemClickListener { view, position ->
            startActivity<TypeVoiceActivity>("title" to topMenu[position].categoryName,"id" to topMenu[position].id)
            startActivity<TypeVoiceActivity>(
                "title" to topMenu[position].categoryName,
                "id" to topMenu[position].id
            )
        }
        iv_today.setOnClickListener {
            if (today!=null){
                if (today?.isShow == 1){ //跳转播放微电影
                    startActivity<MicroVideoActivity>("url" to today?.meditationVideo?.videoUrl,"title" to today?.meditationVideo?.title)
                    startActivity<MicroVideoActivity>(
                        "url" to today?.meditationVideo?.videoUrl,
                        "title" to today?.meditationVideo?.title
                    )
                }else if (ThinkAudioService.voice?.id == today?.meditationId){
                    EventBus.getDefault().post(EmptyEvent(Const.EventCode.PAUSE_OR_RESUME_THINK))
                    if (ThinkAudioService.playing) //播放中
@@ -110,19 +118,22 @@
                        iv_play_today.setImageResource(R.mipmap.play)
                }else{
                    showDialog()
                    HttpManager.getMeditationDetails(today!!.meditationId).requestByF(this,success = {_,data->
                        dismissDialog()
                        if (data?.chargeType == 2&&data.isVip != 1){ //会员免费
                            startActivity<VipActivity>()
                        }else if (data?.chargeType == 3&&data.isBuy != 1){ //单独收费且未购买
                            startActivity<BuyVoiceActivity>("id" to data.id)
                        }else{
                            if (ThinkAudioService.playing)
                                EventBus.getDefault().post(EmptyEvent(Const.EventCode.FINISH_THINK))
                            ThinkAudioService.voice = data
                            EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_THINK))
                        }
                    }){_,_->
                    HttpManager.getMeditationDetails(today!!.meditationId).requestByF(
                        this,
                        success = { _, data ->
                            dismissDialog()
                            if (data?.chargeType == 2 && data.isVip != 1) { //会员免费
                                startActivity<VipActivity>()
                            } else if (data?.chargeType == 3 && data.isBuy != 1) { //单独收费且未购买
                                startActivity<BuyVoiceActivity>("id" to data.id)
                            } else {
                                if (ThinkAudioService.playing)
                                    EventBus.getDefault()
                                        .post(EmptyEvent(Const.EventCode.FINISH_THINK))
                                ThinkAudioService.voice = data
                                EventBus.getDefault().post(EmptyEvent(Const.EventCode.START_THINK))
                            }
                        }){ _, _->
                        dismissDialog()
                    }
                }
@@ -130,22 +141,26 @@
        }
        banner_privacy.setOnBannerListener { data, position ->
            showDialog()
            HttpManager.getMeditationDetails(privacy[position].id).requestByF(this,success = {_,data->
                dismissDialog()
                data?.goDetail(requireContext())
            }){_,_->
            HttpManager.getMeditationDetails(privacy[position].id).requestByF(
                this,
                success = { _, data ->
                    dismissDialog()
                    data?.goDetail(requireContext())
                }){ _, _->
                dismissDialog()
            }
        }
        iv_pri_empty.setOnClickListener { startActivity<LoginActivity>() }
    }
    fun changeBg(bg:String,video:String){
    fun changeBg(bg: String, video: String){
        if (video.isNotEmpty()){
            iv_home.invisible()
            player.visible()
            player.release()
            player.setUrl(video)
            val cacheServer = ProxyVideoCacheManager.getProxy(context)
            val proxyUrl = cacheServer.getProxyUrl(video)
            player.setUrl(proxyUrl)
            player.setLooping(true)
            player.start()
        } else if (bg.isNotEmpty()){
@@ -173,17 +188,17 @@
    }
    private fun getTopMenu(){
        HttpManager.getCategoryListByType(1).requestByF(this){_,data->
        HttpManager.getCategoryListByType(1).requestByF(this){ _, data->
            topMenu.clear()
            topMenu.addAll(data?: arrayListOf())
            topMenu.addAll(data ?: arrayListOf())
            topMenuAdapter.notifyDataSetChanged()
        }
    }
    private fun getBottomMenu(){
        HttpManager.getCategoryListByType(2).requestByF(this){_,data->
        HttpManager.getCategoryListByType(2).requestByF(this){ _, data->
            adapter.menus.clear()
            adapter.menus.addAll(data?: arrayListOf())
            adapter.menus.addAll(data ?: arrayListOf())
            if (list.isNotEmpty()){
                list.add(1, HomeListBean(null, arrayListOf()))
                adapter.notifyDataSetChanged()
@@ -192,7 +207,7 @@
    }
    fun getToday() {
        HttpManager.getTodayMeditation().requestByF(this){_,data->
        HttpManager.getTodayMeditation().requestByF(this){ _, data->
            today = data
            if (data?.isShow == 0){
                tv_1.text = "每日疗愈"
@@ -202,7 +217,9 @@
                }else{
                    iv_daily_empty.gone()
                    iv_today.setImageURI(today?.imageUrl)
                    tv_length_today.text = "${today?.clientMeditationVO?.meditationTitle?.ellipsize(12)} | ${"%02d:%02d".format((data?.time?:0)/60,(data?.time?:0)%60)}"
                    tv_length_today.text = "${today?.clientMeditationVO?.meditationTitle?.ellipsize(
                        12
                    )} | ${"%02d:%02d".format((data?.time ?: 0) / 60, (data?.time ?: 0) % 60)}"
                    tv_today_count.text = "${(today?.clientMeditationVO?.realLearnedNum?:0)+(today?.clientMeditationVO?.virtualLearnedNum?:0)}人已参加学习"
                }
            }else{
@@ -213,7 +230,10 @@
                }else{
                    iv_daily_empty.gone()
                    iv_today.setImageURI(today?.meditationVideo?.imageUrl)
                    tv_length_today.text = "${today?.meditationVideo?.title?.ellipsize(18)} | ${"%02d:%02d".format((today?.meditationVideo?.videoSecond?:0)/60,(today?.meditationVideo?.videoSecond?:0)%60)}"
                    tv_length_today.text = "${today?.meditationVideo?.title?.ellipsize(18)} | ${"%02d:%02d".format(
                        (today?.meditationVideo?.videoSecond ?: 0) / 60,
                        (today?.meditationVideo?.videoSecond ?: 0) % 60
                    )}"
                    tv_today_count.text = ""
                }
            }
@@ -228,17 +248,17 @@
    }
    fun getPrivacy() {
        HttpManager.getPersonalityPlan().requestByF(this){_,data->
        HttpManager.getPersonalityPlan().requestByF(this){ _, data->
            privacy.clear()
            privacy.addAll(data?: arrayListOf())
            privacy.addAll(data ?: arrayListOf())
            privacyAdapter.notifyDataSetChanged()
        }
    }
    private fun getList() {
        HttpManager.getMeditationAndCateList().requestByF(this){_,data->
        HttpManager.getMeditationAndCateList().requestByF(this){ _, data->
            list.clear()
            list.addAll(data?: arrayListOf())
            list.addAll(data ?: arrayListOf())
            if (adapter.menus.isNotEmpty()){
                list.add(1, HomeListBean(null, arrayListOf()))
                adapter.notifyDataSetChanged()