弹出菜单迁移到 HomeFragment
This commit is contained in:
parent
02587b7e21
commit
328cbd205d
|
|
@ -2,8 +2,10 @@ package com.gamedog.vididin.main.fragments
|
||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.core.graphics.toColorInt
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import androidx.core.view.updatePadding
|
import androidx.core.view.updatePadding
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
|
|
@ -13,18 +15,31 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.viewpager2.widget.ViewPager2
|
import androidx.viewpager2.widget.ViewPager2
|
||||||
import com.ama.core.architecture.appBase.AppViewsFragment
|
import com.ama.core.architecture.appBase.AppViewsFragment
|
||||||
import com.ama.core.architecture.appBase.OnFragmentBackgroundListener
|
import com.ama.core.architecture.appBase.OnFragmentBackgroundListener
|
||||||
|
import com.ama.core.architecture.highlightpro.HighlightPro
|
||||||
|
import com.ama.core.architecture.highlightpro.parameter.Constraints
|
||||||
|
import com.ama.core.architecture.highlightpro.parameter.HighlightParameter
|
||||||
|
import com.ama.core.architecture.highlightpro.parameter.MarginOffset
|
||||||
|
import com.ama.core.architecture.highlightpro.shape.OvalShape
|
||||||
|
import com.ama.core.architecture.util.AndroidUtil
|
||||||
|
import com.ama.core.architecture.util.ResUtil.dp
|
||||||
|
import com.ama.core.architecture.util.SpUtil
|
||||||
import com.ama.core.architecture.util.setStatusBarDarkFont
|
import com.ama.core.architecture.util.setStatusBarDarkFont
|
||||||
import com.ama.core.common.util.asSafe
|
import com.ama.core.common.util.asSafe
|
||||||
|
import com.ama.core.common.widget.PopMenuIconView
|
||||||
|
import com.gamedog.vididin.VidiConst
|
||||||
import com.gamedog.vididin.VididinEvents
|
import com.gamedog.vididin.VididinEvents
|
||||||
import com.gamedog.vididin.core.login.login.AccountManager
|
import com.gamedog.vididin.core.login.login.AccountManager
|
||||||
|
import com.gamedog.vididin.main.WatchAdDialog
|
||||||
import com.gamedog.vididin.main.fragments.home.HomeFragmentStateAdapter
|
import com.gamedog.vididin.main.fragments.home.HomeFragmentStateAdapter
|
||||||
import com.gamedog.vididin.main.fragments.home.fragment.HomeItemFragment
|
import com.gamedog.vididin.main.fragments.home.fragment.HomeItemFragment
|
||||||
import com.gamedog.vididin.main.interfaces.OnSwitchTabListener
|
import com.gamedog.vididin.main.interfaces.OnSwitchTabListener
|
||||||
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
|
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
|
||||||
|
import com.gamedog.vididin.router.Router
|
||||||
import com.gamedog.vididin.youtubestatistic.RewardConst
|
import com.gamedog.vididin.youtubestatistic.RewardConst
|
||||||
import com.gamedog.vididin.youtubestatistic.RewardConst.Companion.Check_Interval_MS
|
import com.gamedog.vididin.youtubestatistic.RewardConst.Companion.Check_Interval_MS
|
||||||
import com.remax.bill.ads.AdResult
|
import com.remax.bill.ads.AdResult
|
||||||
import com.remax.bill.ads.ext.AdShowExt
|
import com.remax.bill.ads.ext.AdShowExt
|
||||||
|
import com.vididin.real.money.game.R
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.getValue
|
import kotlin.getValue
|
||||||
|
|
@ -37,7 +52,7 @@ import com.gamedog.vididin.main.fragments.home.YoutubeUiState as UiState
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnSwitchTabListener, OnFragmentBackgroundListener {
|
class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnSwitchTabListener, OnFragmentBackgroundListener {
|
||||||
private var mWatchedVideoTotal = 0
|
private var mWatchedVideoTotal = 0
|
||||||
|
private var mHasShowGuide: Boolean = false
|
||||||
private var mTotalMs: Long = 0L
|
private var mTotalMs: Long = 0L
|
||||||
override val mViewModel: ViewModel by viewModels()
|
override val mViewModel: ViewModel by viewModels()
|
||||||
override var isBackgroundBright: Boolean = true
|
override var isBackgroundBright: Boolean = true
|
||||||
|
|
@ -63,6 +78,23 @@ class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnSwit
|
||||||
viewPager2.offscreenPageLimit = 1
|
viewPager2.offscreenPageLimit = 1
|
||||||
viewPager2.adapter = mViewPagerAdapter
|
viewPager2.adapter = mViewPagerAdapter
|
||||||
|
|
||||||
|
|
||||||
|
popMenu.setMenuList(
|
||||||
|
mutableListOf(
|
||||||
|
PopMenuIconView.MenuItem(R.mipmap.home_menu_1) {
|
||||||
|
Router.Benefit.startActivity(requireActivity())
|
||||||
|
},
|
||||||
|
PopMenuIconView.MenuItem(R.mipmap.home_menu_2) {
|
||||||
|
WatchAdDialog(requireActivity(), VidiConst.WATCH_AD_FOR_DAILY_EARN_GOLD, null).show()
|
||||||
|
},
|
||||||
|
PopMenuIconView.MenuItem(R.mipmap.home_menu_3) {
|
||||||
|
AndroidUtil.openUrl(VidiConst.URL_GAME)
|
||||||
|
},
|
||||||
|
PopMenuIconView.MenuItem(R.mipmap.home_menu_4) {
|
||||||
|
Router.ZeroBuy.startActivity(requireActivity())
|
||||||
|
}
|
||||||
|
))
|
||||||
|
|
||||||
registerEvents({ data->
|
registerEvents({ data->
|
||||||
when (data?.mEventType) {
|
when (data?.mEventType) {
|
||||||
VididinEvents.Event_HOME_WATCH_Time_TICK -> {
|
VididinEvents.Event_HOME_WATCH_Time_TICK -> {
|
||||||
|
|
@ -75,6 +107,37 @@ class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnSwit
|
||||||
}
|
}
|
||||||
|
|
||||||
}, VididinEvents.Event_HOME_WATCH_Time_TICK, VididinEvents.Event_Finish_One_Video)
|
}, VididinEvents.Event_HOME_WATCH_Time_TICK, VididinEvents.Event_Finish_One_Video)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun showGuide() {
|
||||||
|
HighlightPro.with(this@HomeFragment)
|
||||||
|
.setHighlightParameter {
|
||||||
|
HighlightParameter.Builder()
|
||||||
|
.setHighlightView(binding?.popMenu!!, {
|
||||||
|
})
|
||||||
|
.setTipsViewId(R.layout.guide_step_withdraw)
|
||||||
|
.setHighlightShape(OvalShape(binding?.popMenu?.measuredWidth!!.toFloat()/2))
|
||||||
|
.setHighlightHorizontalPadding(0.dp)
|
||||||
|
.setConstraints(Constraints.TopToBottomOfHighlight + Constraints.EndToEndOfHighlight)
|
||||||
|
.setMarginOffset(MarginOffset(top = -20.dp.toInt(), end = -20.dp.toInt()))
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
.setBackgroundColor("#cc000000".toColorInt())
|
||||||
|
.setOnShowCallback { index ->
|
||||||
|
|
||||||
|
}
|
||||||
|
.setOnDismissCallback {
|
||||||
|
binding?.popMenu!!.toggleMenu()
|
||||||
|
saveGuideState()
|
||||||
|
}
|
||||||
|
.interceptBackPressed(true)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun saveGuideState() {
|
||||||
|
SpUtil.instance().putInt(SpUtil.KEY_GUIDE_HAS_SHOW, 6)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleEventOneVideoWatched() {
|
private fun handleEventOneVideoWatched() {
|
||||||
|
|
@ -145,6 +208,16 @@ class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnSwit
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
setStatusBarDarkFont(isDarkFont = isBackgroundBright)
|
setStatusBarDarkFont(isDarkFont = isBackgroundBright)
|
||||||
|
|
||||||
|
if (!mHasShowGuide) {
|
||||||
|
val guideStateValue = SpUtil.instance().getInt(SpUtil.KEY_GUIDE_HAS_SHOW)
|
||||||
|
if (binding?.popMenu?.isVisible == true && guideStateValue == 5) {
|
||||||
|
binding?.popMenu?.postDelayed({
|
||||||
|
showGuide()
|
||||||
|
mHasShowGuide = true
|
||||||
|
}, 5)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
|
|
|
||||||
|
|
@ -13,25 +13,12 @@ import android.view.animation.AnimationSet
|
||||||
import android.view.animation.ScaleAnimation
|
import android.view.animation.ScaleAnimation
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import androidx.annotation.NonNull
|
import androidx.annotation.NonNull
|
||||||
import androidx.core.graphics.toColorInt
|
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import com.ama.core.architecture.appBase.AppViewsEmptyViewModelFragment
|
import com.ama.core.architecture.appBase.AppViewsEmptyViewModelFragment
|
||||||
import com.ama.core.architecture.highlightpro.HighlightPro
|
|
||||||
import com.ama.core.architecture.highlightpro.parameter.Constraints
|
|
||||||
import com.ama.core.architecture.highlightpro.parameter.HighlightParameter
|
|
||||||
import com.ama.core.architecture.highlightpro.parameter.MarginOffset
|
|
||||||
import com.ama.core.architecture.highlightpro.shape.OvalShape
|
|
||||||
import com.ama.core.architecture.highlightpro.shape.RectShape
|
|
||||||
import com.ama.core.architecture.util.AndroidUtil
|
import com.ama.core.architecture.util.AndroidUtil
|
||||||
import com.ama.core.architecture.util.ResUtil.dp
|
|
||||||
import com.ama.core.architecture.util.SpUtil
|
|
||||||
import com.ama.core.architecture.util.setOnClickBatch
|
import com.ama.core.architecture.util.setOnClickBatch
|
||||||
import com.ama.core.common.widget.PopMenuIconView
|
|
||||||
import com.vididin.real.money.game.R
|
import com.vididin.real.money.game.R
|
||||||
import com.gamedog.vididin.VidiConst
|
|
||||||
import com.gamedog.vididin.beans.YoutubeVideo
|
import com.gamedog.vididin.beans.YoutubeVideo
|
||||||
import com.gamedog.vididin.main.WatchAdDialog
|
|
||||||
import com.gamedog.vididin.router.Router
|
|
||||||
import com.gamedog.vididin.widget.MyPlayerControlView
|
import com.gamedog.vididin.widget.MyPlayerControlView
|
||||||
import com.gamedog.vididin.youtubestatistic.TickerTimer
|
import com.gamedog.vididin.youtubestatistic.TickerTimer
|
||||||
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.PlayerConstants
|
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.PlayerConstants
|
||||||
|
|
@ -43,7 +30,6 @@ import com.vididin.real.money.game.databinding.VididinappFeatureHomeItemLayoutBi
|
||||||
|
|
||||||
|
|
||||||
class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
||||||
private var mHasShowGuide: Boolean = false
|
|
||||||
private var mMaskBitmap: Bitmap? = null
|
private var mMaskBitmap: Bitmap? = null
|
||||||
private var mPlayerView: YouTubePlayerView? = null
|
private var mPlayerView: YouTubePlayerView? = null
|
||||||
private var mPlayer: YouTubePlayer? = null
|
private var mPlayer: YouTubePlayer? = null
|
||||||
|
|
@ -71,22 +57,6 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
||||||
ivIntroExpand.isVisible = tvVideoIntro.lineCount > 2
|
ivIntroExpand.isVisible = tvVideoIntro.lineCount > 2
|
||||||
|
|
||||||
|
|
||||||
popMenu.setMenuList(
|
|
||||||
mutableListOf(
|
|
||||||
PopMenuIconView.MenuItem(R.mipmap.home_menu_1) {
|
|
||||||
Router.Benefit.startActivity(requireActivity())
|
|
||||||
},
|
|
||||||
PopMenuIconView.MenuItem(R.mipmap.home_menu_2) {
|
|
||||||
WatchAdDialog(requireActivity(), VidiConst.WATCH_AD_FOR_DAILY_EARN_GOLD, null).show()
|
|
||||||
},
|
|
||||||
PopMenuIconView.MenuItem(R.mipmap.home_menu_3) {
|
|
||||||
AndroidUtil.openUrl(VidiConst.URL_GAME)
|
|
||||||
},
|
|
||||||
PopMenuIconView.MenuItem(R.mipmap.home_menu_4) {
|
|
||||||
Router.ZeroBuy.startActivity(requireActivity())
|
|
||||||
}
|
|
||||||
))
|
|
||||||
|
|
||||||
setOnClickBatch(ivIntroExpand, clickMaskView) {
|
setOnClickBatch(ivIntroExpand, clickMaskView) {
|
||||||
when (this) {
|
when (this) {
|
||||||
clickMaskView -> {
|
clickMaskView -> {
|
||||||
|
|
@ -120,35 +90,9 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private fun showGuide() {
|
|
||||||
HighlightPro.with(this@HomeItemFragment)
|
|
||||||
.setHighlightParameter {
|
|
||||||
HighlightParameter.Builder()
|
|
||||||
.setHighlightView(binding?.popMenu!!, {
|
|
||||||
})
|
|
||||||
.setTipsViewId(R.layout.guide_step_withdraw)
|
|
||||||
.setHighlightShape(OvalShape(binding?.popMenu?.measuredWidth!!.toFloat()/2))
|
|
||||||
.setHighlightHorizontalPadding(0.dp)
|
|
||||||
.setConstraints(Constraints.TopToBottomOfHighlight + Constraints.EndToEndOfHighlight)
|
|
||||||
.setMarginOffset(MarginOffset(top = -20.dp.toInt(), end = -20.dp.toInt()))
|
|
||||||
.build()
|
|
||||||
}
|
|
||||||
.setBackgroundColor("#cc000000".toColorInt())
|
|
||||||
.setOnShowCallback { index ->
|
|
||||||
|
|
||||||
}
|
|
||||||
.setOnDismissCallback {
|
|
||||||
binding?.popMenu!!.toggleMenu()
|
|
||||||
saveGuideState()
|
|
||||||
}
|
|
||||||
.interceptBackPressed(true)
|
|
||||||
.show()
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun saveGuideState() {
|
|
||||||
SpUtil.instance().putInt(SpUtil.KEY_GUIDE_HAS_SHOW, 6)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun playVideo() {
|
private fun playVideo() {
|
||||||
if (mPlayer != null && mVideoData != null && !mVideoData?.id.isNullOrEmpty()) {
|
if (mPlayer != null && mVideoData != null && !mVideoData?.id.isNullOrEmpty()) {
|
||||||
|
|
@ -273,17 +217,6 @@ class HomeItemFragment : AppViewsEmptyViewModelFragment<ViewBinding>() {
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
mPlayer?.play()
|
mPlayer?.play()
|
||||||
|
|
||||||
if (!mHasShowGuide) {
|
|
||||||
val guideStateValue = SpUtil.instance().getInt(SpUtil.KEY_GUIDE_HAS_SHOW)
|
|
||||||
if (binding?.popMenu?.isVisible == true && guideStateValue == 5) {
|
|
||||||
binding?.popMenu?.postDelayed({
|
|
||||||
showGuide()
|
|
||||||
mHasShowGuide = true
|
|
||||||
}, 5)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,4 +18,13 @@
|
||||||
android:layout_marginTop="40dp"
|
android:layout_marginTop="40dp"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<com.ama.core.common.widget.PopMenuIconView
|
||||||
|
android:id="@+id/pop_menu"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="top|right"
|
||||||
|
android:layout_marginRight="20dp"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
/>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
@ -85,15 +85,6 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<com.ama.core.common.widget.PopMenuIconView
|
|
||||||
android:id="@+id/pop_menu"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="top|right"
|
|
||||||
android:layout_marginRight="20dp"
|
|
||||||
android:layout_marginTop="20dp"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<com.ama.core.architecture.widget.CustomProgressBar
|
<com.ama.core.architecture.widget.CustomProgressBar
|
||||||
android:id="@+id/progress_bar_player"
|
android:id="@+id/progress_bar_player"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.pierfrancescosoffritti.androidyoutubeplayer.core.player
|
package com.pierfrancescosoffritti.androidyoutubeplayer.core.player
|
||||||
|
|
||||||
|
import android.webkit.WebView
|
||||||
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.YouTubePlayerListener
|
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.YouTubePlayerListener
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -57,4 +58,6 @@ interface YouTubePlayer {
|
||||||
|
|
||||||
fun addListener(listener: YouTubePlayerListener): Boolean
|
fun addListener(listener: YouTubePlayerListener): Boolean
|
||||||
fun removeListener(listener: YouTubePlayerListener): Boolean
|
fun removeListener(listener: YouTubePlayerListener): Boolean
|
||||||
|
|
||||||
|
fun getWebView(): WebView
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,10 @@ private class YouTubePlayerImpl(
|
||||||
override fun addListener(listener: YouTubePlayerListener) = synchronized(lock) { listeners.add(listener) }
|
override fun addListener(listener: YouTubePlayerListener) = synchronized(lock) { listeners.add(listener) }
|
||||||
override fun removeListener(listener: YouTubePlayerListener) = synchronized(lock) { listeners.remove(listener) }
|
override fun removeListener(listener: YouTubePlayerListener) = synchronized(lock) { listeners.remove(listener) }
|
||||||
|
|
||||||
|
override fun getWebView(): WebView {
|
||||||
|
return webView
|
||||||
|
}
|
||||||
|
|
||||||
fun getListeners(): Collection<YouTubePlayerListener> = synchronized(lock) { listeners.toList() }
|
fun getListeners(): Collection<YouTubePlayerListener> = synchronized(lock) { listeners.toList() }
|
||||||
|
|
||||||
fun release() {
|
fun release() {
|
||||||
|
|
@ -117,6 +121,7 @@ internal class WebViewYouTubePlayer constructor(
|
||||||
override val listeners: Collection<YouTubePlayerListener> get() = _youTubePlayer.getListeners()
|
override val listeners: Collection<YouTubePlayerListener> get() = _youTubePlayer.getListeners()
|
||||||
override fun getInstance(): YouTubePlayer = _youTubePlayer
|
override fun getInstance(): YouTubePlayer = _youTubePlayer
|
||||||
override fun onYouTubeIFrameAPIReady() = youTubePlayerInitListener(_youTubePlayer)
|
override fun onYouTubeIFrameAPIReady() = youTubePlayerInitListener(_youTubePlayer)
|
||||||
|
|
||||||
fun addListener(listener: YouTubePlayerListener) = _youTubePlayer.addListener(listener)
|
fun addListener(listener: YouTubePlayerListener) = _youTubePlayer.addListener(listener)
|
||||||
fun removeListener(listener: YouTubePlayerListener) = _youTubePlayer.removeListener(listener)
|
fun removeListener(listener: YouTubePlayerListener) = _youTubePlayer.removeListener(listener)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue