diff --git a/app/src/main/java/com/gh/common/constant/Constants.java b/app/src/main/java/com/gh/common/constant/Constants.java index 24cbd97709..1cc60e52ac 100644 --- a/app/src/main/java/com/gh/common/constant/Constants.java +++ b/app/src/main/java/com/gh/common/constant/Constants.java @@ -62,6 +62,8 @@ public class Constants { public static final String SP_ADDONS_FUNCS_HAVE_READ = "addons_funcs_have_read"; //视频非wifi提醒只提醒一次,重启恢复 public static final String SP_NON_WIFI_TIPS = "non_wifi_tips"; + //首页视频最新tab提示 + public static final String SP_HOME_NEW_VIDEO_TIPS = "home_new_video"; //手机号码匹配规则 public static final String REGEX_MOBILE = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"; diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index e55e152861..10b538b35f 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -175,7 +175,7 @@ public class MainActivity extends BaseActivity { private boolean isSkipped = false; public static boolean isNewFirstLaunch; - public String uuid = UUID.randomUUID().toString(); +// public String uuid = UUID.randomUUID().toString(); private Handler handler = new Handler(); diff --git a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java index e585d02e96..a825706b4e 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/MainWrapperFragment.java @@ -54,6 +54,7 @@ import com.gh.gamecenter.message.MessageUnreadRepository; import com.gh.gamecenter.message.MessageUnreadViewModel; import com.gh.gamecenter.personal.PersonalFragment; import com.gh.gamecenter.qa.CommunityFragment; +import com.gh.gamecenter.video.detail.HomeVideoFragment; import com.gh.gamecenter.video.detail.VideoDetailContainerFragment; import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel; import com.halo.assistant.HaloApp; @@ -110,9 +111,6 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem @BindView(R.id.main_tab_game_name) TextView mTabGameName; -// @BindView(R.id.iv_discovery_hint_dot) -// protected View mDiscoveryHintIv; - public static final int INDEX_HOME = 0; public static final int INDEX_GAME = 1; public static final int INDEX_VIDEO = 2; @@ -127,7 +125,7 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem private MainWrapperViewModel mViewModel; private MessageUnreadViewModel mMessageUnreadViewModel; private GameTrendsDao mGameTrendsDao; - private VideoDetailContainerFragment videoDetailContainerFragment; + private HomeVideoFragment homeVideoFragment; private String[] resAssets = {"lottie/tab_home.json", "lottie/tab_game.json", "lottie/tab_video.json", "tab_community.gif", "tab_mine.gif"}; @Override @@ -161,17 +159,17 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem mGameWrapperFragment.setArguments(homeArgs); fragments.add(mGameWrapperFragment); - videoDetailContainerFragment = new VideoDetailContainerFragment(); + + homeVideoFragment = new HomeVideoFragment(); Bundle videoArgs = new Bundle(); videoArgs.putString(EntranceUtils.KEY_LOCATION, VideoDetailContainerViewModel.Location.VIDEO_CHOICENESS.getValue()); videoArgs.putString(EntranceUtils.KEY_PATH, "视频总入口"); - videoArgs.putString(EntranceUtils.KEY_UUID, ((MainActivity) requireContext()).uuid); + //videoArgs.putString(EntranceUtils.KEY_UUID, ((MainActivity) requireContext()).uuid); videoArgs.putBoolean(EntranceUtils.KEY_IS_HOME_VIDEO, true); - videoDetailContainerFragment.setArguments(videoArgs); - fragments.add(videoDetailContainerFragment); + homeVideoFragment.setArguments(videoArgs); + fragments.add(homeVideoFragment); fragments.add(new CommunityFragment()); - //fragments.add(new DiscoverFragment()); fragments.add(new PersonalFragment()); } @@ -582,8 +580,8 @@ public class MainWrapperFragment extends BaseFragment_ViewPager_Checkable implem @Override public boolean onHandleBackPressed() { - if (videoDetailContainerFragment != null) { - return videoDetailContainerFragment.onHandleBackPressed(); + if (homeVideoFragment.getCurrentFragment() != null) { + return homeVideoFragment.getCurrentFragment().onHandleBackPressed(); } return false; } diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/CustomManager.java b/app/src/main/java/com/gh/gamecenter/video/detail/CustomManager.java index 51118c2730..45ee4348bb 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/CustomManager.java +++ b/app/src/main/java/com/gh/gamecenter/video/detail/CustomManager.java @@ -8,19 +8,13 @@ import android.view.Window; import com.gh.gamecenter.R; import com.google.android.exoplayer2.DefaultLoadControl; -import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.shuyu.gsyvideoplayer.GSYVideoBaseManager; -import com.shuyu.gsyvideoplayer.model.GSYModel; -import com.shuyu.gsyvideoplayer.player.IPlayerInitSuccessListener; import com.shuyu.gsyvideoplayer.player.IPlayerManager; import com.shuyu.gsyvideoplayer.utils.CommonUtil; - import java.util.HashMap; import java.util.Map; - import tv.danmaku.ijk.media.exo2.Exo2PlayerManager; import tv.danmaku.ijk.media.exo2.IjkExo2MediaPlayer; -import tv.danmaku.ijk.media.player.IMediaPlayer; import static com.shuyu.gsyvideoplayer.utils.CommonUtil.hideNavKey; diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt b/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt index 7e9b12c80d..fa6305a6c4 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt @@ -715,11 +715,12 @@ class DetailPlayerView @JvmOverloads constructor(context: Context, attrs: Attrib } private fun getKey(): String { - return if (context is MainActivity) { + /* return if (context is MainActivity) { "detail_${(context as MainActivity).uuid}" } else { "detail_${(context as VideoDetailActivity).uuid}" - } + }*/ + return "detail_${mViewModel?.uuid}" } override fun updateStartImage() { diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt new file mode 100644 index 0000000000..15f7307ea0 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt @@ -0,0 +1,85 @@ +package com.gh.gamecenter.video.detail + +import android.view.LayoutInflater +import android.view.View +import android.widget.TextView +import androidx.core.os.bundleOf +import androidx.fragment.app.Fragment +import com.gh.base.adapter.FragmentAdapter +import com.gh.base.fragment.BaseLazyFragment +import com.gh.common.constant.Constants +import com.gh.common.util.* +import com.gh.gamecenter.R +import kotlinx.android.synthetic.main.fragment_home_video.* +import java.util.* +import kotlin.collections.ArrayList + +/** + * 首页视频页面 + */ +class HomeVideoFragment : BaseLazyFragment() { + + private var mNewHint: View? = null + private var newestVideoDetailFragment: VideoDetailContainerFragment? = null + private var recommendVideoDetailFragment: VideoDetailContainerFragment? = null + private val fragments = ArrayList() + private val titles = arrayListOf("最新", "推荐") + + override fun getLayoutId(): Int = R.layout.fragment_home_video + + + override fun onFragmentFirstVisible() { + super.onFragmentFirstVisible() + val newestBundle = bundleOf(EntranceUtils.KEY_UUID to UUID.randomUUID().toString()) + newestBundle.putAll(arguments) + newestVideoDetailFragment = VideoDetailContainerFragment() + newestVideoDetailFragment?.with(newestBundle) + fragments.add(newestVideoDetailFragment!!) + + val recommendBundle = bundleOf(EntranceUtils.KEY_UUID to UUID.randomUUID().toString()) + recommendBundle.putAll(arguments) + recommendVideoDetailFragment = VideoDetailContainerFragment() + recommendVideoDetailFragment?.with(recommendBundle) + fragments.add(recommendVideoDetailFragment!!) + + mViewPager.apply { + offscreenPageLimit = fragments.size + adapter = FragmentAdapter(childFragmentManager, fragments, titles) + currentItem = 1 + doOnPageSelected { + if (it == 0) { + SPUtils.setBoolean(Constants.SP_HOME_NEW_VIDEO_TIPS, true) + mNewHint?.visibility = View.GONE + } + } + } + mTabLayout.setupWithViewPager(mViewPager) + + for (i in 0 until mTabLayout.childCount) { + val tab = mTabLayout.getTabAt(i) ?: continue + val tabView = provideTabView(i, if (tab.text != null) tab.text!!.toString() else "") + ?: continue + tab.customView = tabView + } + val homeNewVideoTips = SPUtils.getBoolean(Constants.SP_HOME_NEW_VIDEO_TIPS, false) + mNewHint?.visibleIf(!homeNewVideoTips) + } + + fun getCurrentFragment(): VideoDetailContainerFragment? { + return if (mViewPager.currentItem == 0) { + newestVideoDetailFragment + } else { + recommendVideoDetailFragment + } + } + + private fun provideTabView(position: Int, tabTitle: String): View? { + if (position == 0) { + val container = LayoutInflater.from(context).inflate(R.layout.home_video_tab_item, null) + container.findViewById(R.id.content).text = tabTitle + mNewHint = container.findViewById(R.id.hint) + return container + } + return null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt index 69cfc8a0e5..26c1abc6d2 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/VideoDetailContainerFragment.kt @@ -108,10 +108,7 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { override fun onFragmentFirstVisible() { super.onFragmentFirstVisible() initListener() - if (mLocation == VideoDetailContainerViewModel.Location.USER_UPLOADED_VIDEO.value) { - titleTv.text = "" - } else { - titleTv.text = "推荐" + if (mLocation != VideoDetailContainerViewModel.Location.USER_UPLOADED_VIDEO.value) { toolbar.inflateMenu(R.menu.menu_video_detail) toolbar.setOnMenuItemClickListener { consume { @@ -124,6 +121,7 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { } } if (!mIsHomeVideo) { + titleTv.text = "推荐" toolbar.setNavigationIcon(R.drawable.ic_toolbar_back_white) toolbar.setNavigationOnClickListener { requireActivity().finish() } } @@ -495,7 +493,7 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { super.onFragmentResume() } - override fun onPause() { + override fun onFragmentPause() { if (mScheduledPlayDisposable != null && !mScheduledPlayDisposable!!.isDisposed) { mScheduledPlayDisposable!!.dispose() mScheduledPlayDisposable = null @@ -517,7 +515,7 @@ class VideoDetailContainerFragment : BaseLazyFragment(), OnBackPressedListener { guideRl.visibility = View.GONE } SPUtils.setBoolean(Constants.SP_SHOW_SLIDE_GUIDE, true) - super.onPause() + super.onFragmentPause() ExoCacheManager.cancelAll() } diff --git a/app/src/main/res/color/home_video_text_tabbar_style.xml b/app/src/main/res/color/home_video_text_tabbar_style.xml new file mode 100644 index 0000000000..38ee948efa --- /dev/null +++ b/app/src/main/res/color/home_video_text_tabbar_style.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home_video.xml b/app/src/main/res/layout/fragment_home_video.xml new file mode 100644 index 0000000000..f2e35e46d9 --- /dev/null +++ b/app/src/main/res/layout/fragment_home_video.xml @@ -0,0 +1,29 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_video_detail_container.xml b/app/src/main/res/layout/fragment_video_detail_container.xml index fdbd86a545..efd74aa66d 100644 --- a/app/src/main/res/layout/fragment_video_detail_container.xml +++ b/app/src/main/res/layout/fragment_video_detail_container.xml @@ -69,7 +69,7 @@ android:layout_below="@id/statusbar" android:layout_centerHorizontal="true" android:gravity="center" - android:text="Faithless the wonder boy" + android:text="" android:textColor="@android:color/white" android:textSize="16sp" android:textStyle="bold" /> diff --git a/app/src/main/res/layout/home_video_tab_item.xml b/app/src/main/res/layout/home_video_tab_item.xml new file mode 100644 index 0000000000..4519436ec0 --- /dev/null +++ b/app/src/main/res/layout/home_video_tab_item.xml @@ -0,0 +1,32 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 571f8984f6..3235f4d518 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -71,6 +71,11 @@ @color/text_tabbar_style +