From a977b9464f354539c850edf7da44d4adddca5c87 Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 5 Sep 2022 16:04:06 +0800 Subject: [PATCH] Support render --- .../tv/ui/activity/DetailActivity.java | 30 ++++---- .../tv/ui/activity/SettingActivity.java | 10 +++ .../leanback/res/layout/activity_detail.xml | 36 +++++++--- .../leanback/res/layout/activity_setting.xml | 69 ++++++++++++++----- .../com/fongmi/android/tv/utils/Prefers.java | 8 +++ app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 8 ++- settings.gradle | 4 +- 9 files changed, 127 insertions(+), 40 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index ed29ed300..ba98affc5 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -43,6 +43,7 @@ import com.fongmi.android.tv.utils.Notify; import com.fongmi.android.tv.utils.Prefers; import com.fongmi.android.tv.utils.ResUtil; import com.google.android.exoplayer2.Player; +import com.google.android.exoplayer2.ui.StyledPlayerView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -89,6 +90,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen return 0; } + private StyledPlayerView getPlayerView() { + return Prefers.getRender() == 0 ? mBinding.surface : mBinding.texture; + } + public static void start(Activity activity, String id) { start(activity, ApiConfig.get().getHome().getKey(), id); } @@ -104,7 +109,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen @Override protected ViewBinding getBinding() { mBinding = ActivityDetailBinding.inflate(getLayoutInflater()); - mControl = ViewControllerBottomBinding.bind(mBinding.video.findViewById(com.google.android.exoplayer2.ui.R.id.exo_controller)); + mControl = ViewControllerBottomBinding.bind(getPlayerView().findViewById(com.google.android.exoplayer2.ui.R.id.exo_controller)); return mBinding; } @@ -175,9 +180,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen } private void setVideoView() { - mBinding.video.setPlayer(Players.get().exo()); - mBinding.video.setResizeMode(Prefers.getScale()); - mBinding.video.getSubtitleView().setStyle(ExoUtil.getCaptionStyle()); + getPlayerView().setVisibility(View.VISIBLE); + getPlayerView().setPlayer(Players.get().exo()); + getPlayerView().setResizeMode(Prefers.getScale()); + getPlayerView().getSubtitleView().setStyle(ExoUtil.getCaptionStyle()); mControl.speed.setText(Players.get().getSpeed()); mControl.scale.setText(ResUtil.getStringArray(R.array.select_scale)[Prefers.getScale()]); mControl.interval.setText(ResUtil.getString(R.string.second, Prefers.getInterval())); @@ -309,7 +315,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen private void enterFullscreen() { mBinding.video.setForeground(null); mBinding.video.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); - mHandler.postDelayed(() -> mBinding.video.setUseController(true), 250); + mHandler.postDelayed(() -> getPlayerView().setUseController(true), 250); mBinding.flag.setSelectedPosition(mCurrent); mFullscreen = true; } @@ -317,7 +323,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen private void exitFullscreen() { mBinding.video.setForeground(ResUtil.getDrawable(R.drawable.selector_video)); mBinding.video.setLayoutParams(mFrameParams); - mBinding.video.setUseController(false); + getPlayerView().setUseController(false); mFullscreen = false; } @@ -349,8 +355,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen } private void onScale() { - int scale = mBinding.video.getResizeMode(); - mBinding.video.setResizeMode(scale = scale >= 4 ? 0 : scale + 1); + int scale = getPlayerView().getResizeMode(); + getPlayerView().setResizeMode(scale = scale >= 4 ? 0 : scale + 1); mControl.scale.setText(ResUtil.getStringArray(R.array.select_scale)[scale]); Prefers.putScale(scale); } @@ -530,7 +536,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen @Override public boolean dispatchKeyEvent(KeyEvent event) { - if (mFullscreen && !mBinding.video.isControllerFullyVisible() && mKeyDown.hasEvent(event)) return mKeyDown.onKeyDown(event); + if (mFullscreen && !getPlayerView().isControllerFullyVisible() && mKeyDown.hasEvent(event)) return mKeyDown.onKeyDown(event); else return super.dispatchKeyEvent(event); } @@ -552,7 +558,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen @Override public void onKeyDown() { - mBinding.video.showController(); + getPlayerView().showController(); mControl.next.requestFocus(); } @@ -583,8 +589,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen @Override public void onBackPressed() { - if (mBinding.video.isControllerFullyVisible()) { - mBinding.video.hideController(); + if (getPlayerView().isControllerFullyVisible()) { + getPlayerView().hideController(); } else if (mFullscreen) { exitFullscreen(); } else { diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java index 6f135ea2e..9706f7e3f 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java @@ -53,6 +53,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit protected void initView() { mBinding.url.setText(Prefers.getUrl()); mBinding.home.setText(ApiConfig.getHomeName()); + mBinding.type.setText(ResUtil.getStringArray(R.array.select_render)[Prefers.getRender()]); mBinding.compress.setText(ResUtil.getStringArray(R.array.select_thumbnail)[Prefers.getThumbnail()]); } @@ -62,6 +63,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.config.setOnClickListener(view -> ConfigDialog.show(this)); mBinding.history.setOnClickListener(view -> HistoryDialog.show(this)); mBinding.thumbnail.setOnClickListener(this::setThumbnail); + mBinding.render.setOnClickListener(this::setRender); } @Override @@ -129,4 +131,12 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.compress.setText(array[index]); RefreshEvent.image(); } + + public void setRender(View view) { + CharSequence[] array = ResUtil.getStringArray(R.array.select_render); + int index = Prefers.getRender(); + index = index == 1 ? 0 : ++index; + Prefers.putRender(index); + mBinding.type.setText(array[index]); + } } diff --git a/app/src/leanback/res/layout/activity_detail.xml b/app/src/leanback/res/layout/activity_detail.xml index 1175af221..31bcf9665 100644 --- a/app/src/leanback/res/layout/activity_detail.xml +++ b/app/src/leanback/res/layout/activity_detail.xml @@ -7,7 +7,7 @@ android:layout_height="match_parent" android:keepScreenOn="true"> - + android:foreground="@drawable/selector_video"> + + + + - + - + android:background="@drawable/selector_item" + android:focusable="true" + android:focusableInTouchMode="true" + android:orientation="horizontal"> - + + + + + + + android:layout_weight="1" + android:background="@drawable/selector_item" + android:focusable="true" + android:focusableInTouchMode="true" + android:orientation="horizontal"> + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java b/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java index 82d27c10e..3352a9d49 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java @@ -91,6 +91,14 @@ public class Prefers { Prefers.put("thumbnail", thumbnail); } + public static int getRender() { + return Prefers.getInt("render", 0); + } + + public static void putRender(int render) { + Prefers.put("render", render); + } + public static int getInterval() { return Prefers.getInt("interval", 15); } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index d82aed1a4..bdd0a31bf 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -40,6 +40,7 @@ 首页 配置 + 渲染 缩图 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 41d5d61b1..3705590f6 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -40,6 +40,7 @@ 首頁 配置 + 渲染 縮圖 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ce52c0dff..2ed8aa68c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,4 @@ - + TV @@ -40,6 +40,7 @@ Home site Configuration + Render Thumbnail @@ -68,6 +69,11 @@ %s s + + Surface + Texture + + Low Medium diff --git a/settings.gradle b/settings.gradle index 987a6017c..3ff3ae720 100644 --- a/settings.gradle +++ b/settings.gradle @@ -14,8 +14,8 @@ dependencyResolutionManagement { google() } } +include ':app' +include ':catvod' gradle.ext.exoplayerModulePrefix = 'exoplayer-' apply from: file("/exo/core_settings.gradle") rootProject.name = "TV" -include ':app' -include ':catvod'