From 760095c694f3750281536a7d662a28f5114a4442 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 12 Mar 2023 12:24:18 +0800 Subject: [PATCH] [mobile] fix full screen logic --- .../com/fongmi/android/tv/utils/ResUtil.java | 8 +++++++ .../java/com/fongmi/android/tv/Product.java | 10 ++++---- .../tv/ui/activity/CollectActivity.java | 2 +- .../tv/ui/activity/DetailActivity.java | 24 +++++++++++++------ .../tv/ui/fragment/child/HomeFragment.java | 4 ++-- .../tv/ui/fragment/child/TypeFragment.java | 2 +- .../mobile/res/layout/view_control_vod.xml | 8 +++++-- 7 files changed, 41 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java index 69e970dbf..6a7ddd823 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java @@ -62,6 +62,10 @@ public class ResUtil { return getDisplayMetrics().widthPixels; } + public static int getScreenWidth(Context context) { + return context.getResources().getDisplayMetrics().widthPixels; + } + public static int getScreenWidthNav() { return getDisplayMetrics().widthPixels + getNavigationBarHeight(App.get()); } @@ -70,6 +74,10 @@ public class ResUtil { return getDisplayMetrics().heightPixels; } + public static int getScreenHeight(Context context) { + return context.getResources().getDisplayMetrics().heightPixels; + } + public static int getScreenHeightNav() { return getDisplayMetrics().heightPixels + getNavigationBarHeight(App.get()); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/Product.java b/app/src/mobile/java/com/fongmi/android/tv/Product.java index 670e21536..b595b4d0f 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/Product.java +++ b/app/src/mobile/java/com/fongmi/android/tv/Product.java @@ -1,5 +1,7 @@ package com.fongmi.android.tv; +import android.content.Context; + import com.fongmi.android.tv.utils.Prefers; import com.fongmi.android.tv.utils.ResUtil; @@ -12,12 +14,12 @@ public class Product { public static void bootLive() { } - public static int[] getSpec() { - return getSpec(ResUtil.dp2px(32) + ResUtil.dp2px(16 * (getColumn() - 1)), getColumn()); + public static int[] getSpec(Context context) { + return getSpec(context, ResUtil.dp2px(32) + ResUtil.dp2px(16 * (getColumn() - 1)), getColumn()); } - public static int[] getSpec(int space, int column) { - int base = ResUtil.getScreenWidth() - space; + public static int[] getSpec(Context context, int space, int column) { + int base = ResUtil.getScreenWidth(context) - space; int width = base / column; int height = (int) (width / 0.75f); return new int[]{width, height}; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java index 60b949edb..9e8203389 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java @@ -127,7 +127,7 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA mBinding.recordRecycler.setHasFixedSize(true); mBinding.recordRecycler.setLayoutManager(new GridLayoutManager(this, 2)); mBinding.recordRecycler.setAdapter(mRecordAdapter = new RecordAdapter(this)); - mVodAdapter.setSize(Product.getSpec(ResUtil.dp2px(64), 3)); + mVodAdapter.setSize(Product.getSpec(this, ResUtil.dp2px(64), 3)); } private void setLayoutSize() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index c5875d0c4..d70952cbd 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -183,7 +183,9 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT); getIntent().putExtras(intent); + setOrient(); getDetail(); } @@ -398,6 +400,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } private void setEpisodeAdapter(List items) { + mBinding.control.nextRoot.setVisibility(items.size() < 2 ? View.GONE : View.VISIBLE); + mBinding.control.prevRoot.setVisibility(items.size() < 2 ? View.GONE : View.VISIBLE); mBinding.episode.setVisibility(items.isEmpty() ? View.GONE : View.VISIBLE); mEpisodeAdapter.addAll(items); } @@ -594,6 +598,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } private void enterFullscreen() { + if (isFullscreen()) return; mBinding.video.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); getIjk().getSubtitleView().setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); @@ -605,6 +610,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } private void exitFullscreen() { + if (!isFullscreen()) return; getIjk().getSubtitleView().setTextSize(TypedValue.COMPLEX_UNIT_SP, 14); mBinding.control.full.setImageResource(R.drawable.ic_control_full_on); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT); @@ -1073,18 +1079,22 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis @Override public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) { super.onPictureInPictureModeChanged(isInPictureInPictureMode); - if (isInPictureInPictureMode) hideControl(); - else if (isStop()) finish(); - hideTrack(); + if (isInPictureInPictureMode) { + enterFullscreen(); + hideControl(); + hideTrack(); + } else { + exitFullscreen(); + if (isStop()) finish(); + } } @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); - if (isFullscreen()) Utils.hideSystemUI(this); - if (Utils.hasPIP() && isInPictureInPictureMode()) enterFullscreen(); - else if (ResUtil.isLand(this) && !isFullscreen()) enterFullscreen(); - else if (ResUtil.isPort(this) && isFullscreen() && !isRotate()) exitFullscreen(); + if (ResUtil.isLand(this)) enterFullscreen(); + else if (ResUtil.isPort(this) && !isRotate()) exitFullscreen(); + else if (isFullscreen()) Utils.hideSystemUI(this); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/HomeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/HomeFragment.java index e80c8449d..a8b70fefc 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/HomeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/HomeFragment.java @@ -78,8 +78,8 @@ public class HomeFragment extends BaseFragment implements VodAdapter.OnClickList mBinding.recommend.setHasFixedSize(true); mBinding.recommend.setLayoutManager(new GridLayoutManager(getContext(), Product.getColumn())); mBinding.recommend.setAdapter(mVodAdapter = new VodAdapter(this)); - mHistoryAdapter.setSize(Product.getSpec()); - mVodAdapter.setSize(Product.getSpec()); + mHistoryAdapter.setSize(Product.getSpec(getActivity())); + mVodAdapter.setSize(Product.getSpec(getActivity())); } private void setViewModel() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/TypeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/TypeFragment.java index bc8ffab4f..2990c3932 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/TypeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/TypeFragment.java @@ -93,7 +93,7 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac mBinding.recycler.setHasFixedSize(true); mBinding.recycler.setAdapter(mVodAdapter = new VodAdapter(this)); mBinding.recycler.setLayoutManager(new GridLayoutManager(getContext(), Product.getColumn())); - mVodAdapter.setSize(Product.getSpec()); + mVodAdapter.setSize(Product.getSpec(getActivity())); } private void setViewModel() { diff --git a/app/src/mobile/res/layout/view_control_vod.xml b/app/src/mobile/res/layout/view_control_vod.xml index 65e1626a5..a8c892a76 100644 --- a/app/src/mobile/res/layout/view_control_vod.xml +++ b/app/src/mobile/res/layout/view_control_vod.xml @@ -72,9 +72,11 @@ android:orientation="horizontal"> + android:background="@drawable/shape_control" + android:visibility="gone"> + android:background="@drawable/shape_control" + android:visibility="gone">