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