From 5cedb2fbed02b91e4f919112de272ba069a3d0de Mon Sep 17 00:00:00 2001 From: okjack Date: Fri, 2 Feb 2024 22:32:25 +0800 Subject: [PATCH] dialog background,aggregated search,default speed --- .../tv/ui/activity/SettingCustomActivity.java | 24 ++++++++ .../android/tv/ui/activity/VideoActivity.java | 1 + .../android/tv/ui/dialog/EpisodeDialog.java | 12 ++++ .../android/tv/ui/fragment/VodFragment.java | 4 +- .../res/drawable/shape_trans_bottom_sheet.xml | 11 ++++ .../res/layout/activity_setting_custom.xml | 58 +++++++++++++++++++ app/src/leanback/res/values/styles.xml | 14 +++++ .../java/com/fongmi/android/tv/Setting.java | 16 +++++ app/src/main/res/values-zh-rCN/strings.xml | 2 + app/src/main/res/values-zh-rTW/strings.xml | 2 + app/src/main/res/values/strings.xml | 2 + .../android/tv/ui/activity/VideoActivity.java | 1 + .../tv/ui/fragment/SettingCustomFragment.java | 24 ++++++++ .../android/tv/ui/fragment/TypeFragment.java | 4 +- .../res/layout/fragment_setting_custom.xml | 54 +++++++++++++++++ 15 files changed, 227 insertions(+), 2 deletions(-) create mode 100644 app/src/leanback/res/drawable/shape_trans_bottom_sheet.xml diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java index b9e5bef44..0aa0e1565 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java @@ -42,6 +42,8 @@ public class SettingCustomActivity extends BaseActivity { mBinding.displayTimeText.setText(getSwitch(Setting.isDisplayTime())); mBinding.displayNetspeedText.setText(getSwitch(Setting.isDisplaySpeed())); mBinding.displayDurationText.setText(getSwitch(Setting.isDisplayDuration())); + mBinding.speedText.setText(Setting.getPlaySpeed() + "x"); + mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch())); } @Override @@ -52,6 +54,9 @@ public class SettingCustomActivity extends BaseActivity { mBinding.displayTime.setOnClickListener(this::setDisplayTime); mBinding.displayNetspeed.setOnClickListener(this::setDisplaySpeed); mBinding.displayDuration.setOnClickListener(this::setDisplayDuration); + mBinding.speed.setOnClickListener(this::setSpeed); + mBinding.speed.setOnLongClickListener(this::resetSpeed); + mBinding.aggregatedSearch.setOnClickListener(this::setAggregatedSearch); } private void setQuality(View view) { @@ -89,4 +94,23 @@ public class SettingCustomActivity extends BaseActivity { mBinding.displayDurationText.setText(getSwitch(Setting.isDisplayDuration())); } + private void setSpeed(View view) { + float speed = Setting.getPlaySpeed(); + float addon = speed >= 2 ? 1f : 0.25f; + speed = speed >= 5 ? 0.25f : Math.min(speed + addon, 5.0f); + Setting.putPlaySpeed(speed); + mBinding.speedText.setText(Setting.getPlaySpeed() + "x"); + } + + private boolean resetSpeed(View view) { + Setting.putPlaySpeed(1.0f); + mBinding.speedText.setText(Setting.getPlaySpeed() + "x"); + return true; + } + + private void setAggregatedSearch(View view) { + Setting.putAggregatedSearch(!Setting.isAggregatedSearch()); + mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch())); + } + } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index e03f698f3..f597354d5 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -1195,6 +1195,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List history.setVodPic(item.getVodPic()); history.setVodName(item.getVodName()); history.findEpisode(item.getVodFlags()); + history.setSpeed(Setting.getPlaySpeed()); return history; } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/EpisodeDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/EpisodeDialog.java index 43637caff..c4705b005 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/EpisodeDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/EpisodeDialog.java @@ -1,5 +1,7 @@ package com.fongmi.android.tv.ui.dialog; +import android.app.Dialog; +import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; @@ -15,12 +17,14 @@ import androidx.leanback.widget.ItemBridgeAdapter; import androidx.leanback.widget.OnChildViewHolderSelectedListener; import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; +import com.fongmi.android.tv.R; import com.fongmi.android.tv.bean.Episode; import com.fongmi.android.tv.databinding.DialogEpisodeBinding; import com.fongmi.android.tv.ui.activity.VideoActivity; import com.fongmi.android.tv.ui.presenter.ArrayPresenter; import com.fongmi.android.tv.ui.presenter.EpisodePresenter; import com.fongmi.android.tv.utils.ResUtil; +import com.google.android.material.bottomsheet.BottomSheetDialog; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import java.util.ArrayList; @@ -38,6 +42,14 @@ public class EpisodeDialog extends BaseDialog implements ArrayPresenter.OnClickL private ArrayPresenter mArrayPresenter; private int groupSize; + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + setStyle(STYLE_NORMAL, R.style.TransBottomSheetDialog); + BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState); + return dialog; + } + public static EpisodeDialog create() { return new EpisodeDialog(); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 0945029ac..c3274efd3 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -19,6 +19,7 @@ import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.App; import com.fongmi.android.tv.Product; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.api.config.VodConfig; import com.fongmi.android.tv.bean.Filter; import com.fongmi.android.tv.bean.Page; @@ -282,7 +283,8 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback mBinding.recycler.setMoveTop(false); getVideo(item.getVodId(), "1"); } else { - if (!isFolder()) VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic()); + if (Setting.isAggregatedSearch()) CollectActivity.start(getActivity(), item.getVodName()); + else if (!isFolder()) VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic()); else VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic(), item.getVodName()); } } diff --git a/app/src/leanback/res/drawable/shape_trans_bottom_sheet.xml b/app/src/leanback/res/drawable/shape_trans_bottom_sheet.xml new file mode 100644 index 000000000..03c9dcd9e --- /dev/null +++ b/app/src/leanback/res/drawable/shape_trans_bottom_sheet.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/leanback/res/layout/activity_setting_custom.xml b/app/src/leanback/res/layout/activity_setting_custom.xml index 368749eee..eb967dc3f 100644 --- a/app/src/leanback/res/layout/activity_setting_custom.xml +++ b/app/src/leanback/res/layout/activity_setting_custom.xml @@ -188,5 +188,63 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/leanback/res/values/styles.xml b/app/src/leanback/res/values/styles.xml index 664d4fbdd..f357a9d52 100644 --- a/app/src/leanback/res/values/styles.xml +++ b/app/src/leanback/res/values/styles.xml @@ -32,4 +32,18 @@ @style/ModalBottomSheetDialog + + + + + diff --git a/app/src/main/java/com/fongmi/android/tv/Setting.java b/app/src/main/java/com/fongmi/android/tv/Setting.java index 1834d834f..713f0c9f0 100644 --- a/app/src/main/java/com/fongmi/android/tv/Setting.java +++ b/app/src/main/java/com/fongmi/android/tv/Setting.java @@ -365,4 +365,20 @@ public class Setting { Prefers.put("display_duration", display); } + public static float getPlaySpeed() { + return Prefers.getFloat("play_speed", 1.0f); + } + + public static void putPlaySpeed(float speed) { + Prefers.put("play_speed", speed); + } + + public static boolean isAggregatedSearch() { + return Prefers.getBoolean("aggregated_search", false); + } + + public static void putAggregatedSearch(boolean search) { + Prefers.put("aggregated_search", search); + } + } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index f73bed46b..0a57d5157 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 @@ 网速 进度 弹幕 + 倍速 换源 @@ -74,6 +75,7 @@ 个性设置 图片品质 图片尺寸 + 聚合搜索 DoH Proxy 缓存 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index ffcdcb4a2..67d7157c6 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 @@ 網速 進度 彈幕 + 倍速 換源 @@ -74,6 +75,7 @@ 個性設定 圖片品質 圖片尺寸 + 聚合搜索 DoH Proxy 暫存 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e0c83702e..d744bdabd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -40,6 +40,7 @@ Net Speed Duration Danmu + Speed Change @@ -74,6 +75,7 @@ Custom setting Image quality Image size + Aggregated search DoH Proxy Cache diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 3afc701fe..8021dc338 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -1134,6 +1134,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo history.setVodPic(item.getVodPic()); history.setVodName(item.getVodName()); history.findEpisode(item.getVodFlags()); + history.setSpeed(Setting.getPlaySpeed()); return history; } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java index bfb8b2db4..f7f1285b6 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java @@ -38,6 +38,8 @@ public class SettingCustomFragment extends BaseFragment { protected void initView() { mBinding.sizeText.setText((size = ResUtil.getStringArray(R.array.select_size))[Setting.getSize()]); mBinding.danmuSyncText.setText(getSwitch(Setting.isDanmuSync())); + mBinding.speedText.setText(Setting.getPlaySpeed() + "x"); + mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch())); } @Override @@ -45,6 +47,9 @@ public class SettingCustomFragment extends BaseFragment { mBinding.title.setOnLongClickListener(this::onTitle); mBinding.size.setOnClickListener(this::setSize); mBinding.danmuSync.setOnClickListener(this::setDanmuSync); + mBinding.speed.setOnClickListener(this::setSpeed); + mBinding.speed.setOnLongClickListener(this::resetSpeed); + mBinding.aggregatedSearch.setOnClickListener(this::setAggregatedSearch); } private boolean onTitle(View view) { @@ -66,5 +71,24 @@ public class SettingCustomFragment extends BaseFragment { mBinding.danmuSyncText.setText(getSwitch(Setting.isDanmuSync())); } + private void setSpeed(View view) { + float speed = Setting.getPlaySpeed(); + float addon = speed >= 2 ? 1f : 0.25f; + speed = speed >= 5 ? 0.25f : Math.min(speed + addon, 5.0f); + Setting.putPlaySpeed(speed); + mBinding.speedText.setText(Setting.getPlaySpeed() + "x"); + } + + private boolean resetSpeed(View view) { + Setting.putPlaySpeed(1.0f); + mBinding.speedText.setText(Setting.getPlaySpeed() + "x"); + return true; + } + + private void setAggregatedSearch(View view) { + Setting.putAggregatedSearch(!Setting.isAggregatedSearch()); + mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch())); + } + } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java index 46633dcfa..1dc3fa0dc 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java @@ -12,6 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import androidx.viewbinding.ViewBinding; +import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.Product; import com.fongmi.android.tv.api.config.VodConfig; import com.fongmi.android.tv.bean.Page; @@ -221,7 +222,8 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac mPages.add(Page.get(item, findPosition())); getVideo(item.getVodId(), "1"); } else { - if (item.isManga()) DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic()); + if (Setting.isAggregatedSearch()) CollectActivity.start(getActivity(), item.getVodName()); + else if (item.isManga()) DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic()); else VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic(), isFolder() ? item.getVodName() : null, false); } } diff --git a/app/src/mobile/res/layout/fragment_setting_custom.xml b/app/src/mobile/res/layout/fragment_setting_custom.xml index 97b3852c2..91b3ff484 100644 --- a/app/src/mobile/res/layout/fragment_setting_custom.xml +++ b/app/src/mobile/res/layout/fragment_setting_custom.xml @@ -99,6 +99,60 @@ + + + + + + + + + + + + + + + + \ No newline at end of file