From 718f31c92e2029d05260810435a2c70cef6e6ce5 Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期四, 24 四月 2025 10:45:55 +0800 Subject: [PATCH] save --- app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt | 192 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 141 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt b/app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt index 10cdb14..e4331dd 100644 --- a/app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/sinata/xqmuse/ui/home/HomeFragment.kt @@ -4,11 +4,13 @@ import androidx.recyclerview.widget.LinearLayoutManager import cn.sinata.xldutils.fragment.BaseFragment import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SPUtils +import cn.sinata.xldutils.invisible import cn.sinata.xldutils.utils.ellipsize import cn.sinata.xldutils.visible -import com.sinata.xqmuse.MainActivity +import com.google.android.exoplayer2.upstream.DataSpec +import com.google.android.exoplayer2.upstream.RawResourceDataSource import com.sinata.xqmuse.R +import com.sinata.xqmuse.ThinkAudioService import com.sinata.xqmuse.network.HttpManager import com.sinata.xqmuse.network.entity.* import com.sinata.xqmuse.network.requestByF @@ -21,11 +23,11 @@ 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.* import org.greenrobot.eventbus.EventBus -import org.jetbrains.anko.startActivity import org.jetbrains.anko.support.v4.startActivity import org.jetbrains.anko.support.v4.toast @@ -36,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()) @@ -50,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() } } @@ -64,13 +68,23 @@ getList() getBottomMenu() initClick() - changeBg() } fun refreshData(){ getToday() getPrivacy() getList() + EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_BGM)) //BGM切换流程 + } + + fun refreshDataByResume(){ + if (list.isNotEmpty()){ + getTopMenu() + getToday() + getPrivacy() + getList() + getBottomMenu() + } } private fun initClick() { @@ -80,10 +94,10 @@ iv_privacy.setOnClickListener { startActivity<GuideActivity>() } - iv_guide.setOnClickListener { + 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) } } } @@ -94,31 +108,42 @@ 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 (MainActivity.voice?.id == today?.meditationId){ + if (today?.isShow == 1){ //跳转播放微电影 + 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 (MainActivity.playing) //播放中 + if (ThinkAudioService.playing) //播放中 iv_play_today.setImageResource(R.mipmap.player_pause) else 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 (MainActivity.playing) - EventBus.getDefault().post(EmptyEvent(Const.EventCode.FINISH_THINK)) - MainActivity.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() } } @@ -126,34 +151,64 @@ } 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(){ - val bg = SPUtils.instance().getString(Const.User.BG) - if (!bg.isNullOrEmpty()) + fun changeBg(bg: String, video: String){ + if (video.isNotEmpty()){ + iv_home.invisible() + player.visible() + player.release() + val cacheServer = ProxyVideoCacheManager.getProxy(context) + val proxyUrl = cacheServer.getProxyUrl(video) + player.setUrl(proxyUrl) + player.setLooping(true) + player.start() + } else if (bg.isNotEmpty()){ iv_home.setImageURI(bg) + player.release() + player.gone() + iv_home.visible() + }else{ + iv_home.invisible() + player.visible() + player.release() + //ExoPlayer + val dataSpec = DataSpec(RawResourceDataSource.buildRawResourceUri(R.raw.default_bg)) + val rawResourceDataSource = RawResourceDataSource(requireContext()) + try { + rawResourceDataSource.open(dataSpec) + } catch (e: RawResourceDataSource.RawResourceDataSourceException) { + e.printStackTrace() + } + val url = rawResourceDataSource.uri.toString() + player.setUrl(url) + player.setLooping(true) + player.start() + } } 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() @@ -162,42 +217,77 @@ } fun getToday() { - HttpManager.getTodayMeditation().requestByF(this){_,data-> + HttpManager.getTodayMeditation().requestByF(this){ _, data-> today = data - if (today?.clientMeditationVO?.backgroundUrl.isNullOrEmpty()){ - iv_daily_empty.visible() + if (data?.isShow == 0){ + tv_1.text = "每日疗愈" + tv_sub_1.text = "Daily Meditation" + if (today?.clientMeditationVO?.backgroundUrl.isNullOrEmpty()){ + iv_daily_empty.visible() + }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_today_count.text = "${(today?.clientMeditationVO?.realLearnedNum?:0)+(today?.clientMeditationVO?.virtualLearnedNum?:0)}人已参加学习" + } }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_today_count.text = "${(today?.clientMeditationVO?.realLearnedNum?:0)+(today?.clientMeditationVO?.virtualLearnedNum?:0)}人已参加学习" + tv_1.text = "泉疗愈 微电影" + tv_sub_1.text = "Spring Healing Microfilm" + if (today?.meditationVideo?.videoUrl.isNullOrEmpty()){ + iv_daily_empty.visible() + }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_today_count.text = "" + } } } } fun refreshTodayPlayingState(){ - if (MainActivity.voice?.id == today?.meditationId&&MainActivity.playing) + if (ThinkAudioService.voice?.id == today?.meditationId&&ThinkAudioService.playing) iv_play_today.setImageResource(R.mipmap.player_pause) else iv_play_today.setImageResource(R.mipmap.play) } 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() } } } + + override fun onPause() { + super.onPause() + player?.pause() + } + + override fun onResume() { + super.onResume() + player?.resume() + } + + override fun onDestroy() { + super.onDestroy() + player?.release() + } } \ No newline at end of file -- Gitblit v1.7.1