diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
index dcd74c5f0..1f126c090 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
@@ -47,6 +47,7 @@ import com.fongmi.android.tv.ui.custom.CustomRowPresenter;
import com.fongmi.android.tv.ui.custom.CustomSelector;
import com.fongmi.android.tv.ui.custom.CustomTitleView;
import com.fongmi.android.tv.ui.dialog.HistoryDialog;
+import com.fongmi.android.tv.ui.dialog.MenuDialog;
import com.fongmi.android.tv.ui.dialog.SiteDialog;
import com.fongmi.android.tv.ui.presenter.FuncPresenter;
import com.fongmi.android.tv.ui.presenter.HeaderPresenter;
@@ -113,7 +114,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
@Override
protected void initEvent() {
mBinding.title.setListener(this);
- mBinding.settingVodHistory.setOnClickListener(this::onSettingVodHistory);
mBinding.recycler.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() {
@Override
public void onChildViewHolderSelected(@NonNull RecyclerView parent, @Nullable RecyclerView.ViewHolder child, int position, int subposition) {
@@ -137,7 +137,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
private void setTitleView() {
mBinding.homeSiteLock.setVisibility(Setting.isHomeSiteLock() ? View.VISIBLE : View.GONE);
- mBinding.settingVodHistory.setVisibility(Setting.isHomeSiteLock() || !Setting.isHomeChangeConfig() ? View.GONE : View.VISIBLE);
}
private void setRecyclerView() {
@@ -166,7 +165,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
mHistoryAdapter = new ArrayObjectAdapter(mPresenter = new HistoryPresenter(this));
}
- private void onSettingVodHistory(View view) {
+ public void showSettingVodHistory() {
HistoryDialog.create(this).type(0).show();
}
@@ -272,7 +271,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
adapter.add(Func.create(R.string.home_search));
adapter.add(Func.create(R.string.home_keep));
adapter.add(Func.create(R.string.home_push));
- adapter.add(Func.create(R.string.home_history));
+ if (Setting.getHomeMenuKey() == 2 || Setting.getHomeMenuKey() == 3) adapter.add(Func.create(R.string.home_history));
adapter.add(Func.create(R.string.home_setting));
((Func) adapter.get(0)).setNextFocusLeft(((Func) adapter.get(adapter.size() - 1)).getId());
((Func) adapter.get(adapter.size() - 1)).setNextFocusRight(((Func) adapter.get(0)).getId());
@@ -473,7 +472,10 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
- if (KeyUtil.isMenuKey(event)) showDialog();
+ if (KeyUtil.isMenuKey(event) && Setting.getHomeMenuKey() == 0) MenuDialog.create(this).show();
+ if (KeyUtil.isMenuKey(event) && Setting.getHomeMenuKey() == 1) showDialog();
+ if (KeyUtil.isMenuKey(event) && Setting.getHomeMenuKey() == 2) showSettingVodHistory();
+ if (KeyUtil.isMenuKey(event) && Setting.getHomeMenuKey() == 3) HistoryActivity.start(this);
return super.dispatchKeyEvent(event);
}
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 aef0fd795..acbdab79c 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
@@ -23,6 +23,7 @@ public class SettingCustomActivity extends BaseActivity {
private String[] episode;
private String[] fullscreenMenuKey;
private String[] smallWindowBackKey;
+ private String[] homeMenuKey;
@Override
protected ViewBinding getBinding() {
@@ -52,7 +53,7 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.homeSiteLockText.setText(getSwitch(Setting.isHomeSiteLock()));
mBinding.incognitoText.setText(getSwitch(Setting.isIncognito()));
mBinding.smallWindowBackKeyText.setText((smallWindowBackKey = ResUtil.getStringArray(R.array.select_small_window_back_key))[Setting.getSmallWindowBackKey()]);
- mBinding.homeChangeConfigText.setText(getSwitch(Setting.isHomeChangeConfig()));
+ mBinding.homeMenuKeyText.setText((homeMenuKey = ResUtil.getStringArray(R.array.select_home_menu_key))[Setting.getHomeMenuKey()]);
mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch()));
}
@@ -71,7 +72,7 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.homeSiteLock.setOnClickListener(this::setHomeSiteLock);
mBinding.incognito.setOnClickListener(this::setIncognito);
mBinding.smallWindowBackKey.setOnClickListener(this::setSmallWindowBackKey);
- mBinding.homeChangeConfig.setOnClickListener(this::setHomeChangeConfig);
+ mBinding.homeMenuKey.setOnClickListener(this::setHomeMenuKey);
mBinding.aggregatedSearch.setOnClickListener(this::setAggregatedSearch);
}
@@ -155,9 +156,10 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.smallWindowBackKeyText.setText(smallWindowBackKey[index]);
}
- private void setHomeChangeConfig(View view) {
- Setting.putHomeChangeConfig(!Setting.isHomeChangeConfig());
- mBinding.homeChangeConfigText.setText(getSwitch(Setting.isHomeChangeConfig()));
+ private void setHomeMenuKey(View view) {
+ int index = Setting.getHomeMenuKey();
+ Setting.putHomeMenuKey(index = index == homeMenuKey.length - 1 ? 0 : ++index);
+ mBinding.homeMenuKeyText.setText(homeMenuKey[index]);
}
private void setAggregatedSearch(View view) {
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java
index 6c5c4bfa6..89c84b72b 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java
@@ -42,7 +42,6 @@ public class CustomTitleView extends AppCompatTextView {
}
private boolean hasEvent(KeyEvent event) {
- if (Setting.isHomeChangeConfig()) return KeyUtil.isEnterKey(event) || (KeyUtil.isUpKey(event) && !coolDown);
return KeyUtil.isEnterKey(event) || KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event) || (KeyUtil.isUpKey(event) && !coolDown);
}
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuDialog.java
new file mode 100644
index 000000000..422883d94
--- /dev/null
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuDialog.java
@@ -0,0 +1,80 @@
+package com.fongmi.android.tv.ui.dialog;
+
+import android.app.Activity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.WindowManager;
+
+import androidx.appcompat.app.AlertDialog;
+
+import com.fongmi.android.tv.R;
+import com.fongmi.android.tv.databinding.DialogMenuBinding;
+import com.fongmi.android.tv.ui.activity.HistoryActivity;
+import com.fongmi.android.tv.ui.activity.HomeActivity;
+import com.fongmi.android.tv.utils.ResUtil;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
+public class MenuDialog {
+ private final DialogMenuBinding binding;
+ private final AlertDialog dialog;
+
+ private final Activity activity;
+ private String[] homeMenuKey;
+
+ public static MenuDialog create(Activity activity) {
+ return new MenuDialog(activity);
+ }
+
+ public MenuDialog(Activity activity) {
+ this.activity = activity;
+ this.binding = DialogMenuBinding.inflate(LayoutInflater.from(activity));
+ this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create();
+ }
+
+ public void show() {
+ initView();
+ initEvent();
+ }
+
+ private void initView() {
+ setTextView();
+ setDialog();
+ binding.site.requestFocus();
+ }
+
+ private void initEvent() {
+ binding.site.setOnClickListener(this::showSiteDialog);
+ binding.settingVodHistory.setOnClickListener(this::showSettingVodHistory);
+ binding.history.setOnClickListener(this::startHistory);
+ }
+
+ private void setTextView() {
+ homeMenuKey = ResUtil.getStringArray(R.array.select_home_menu_key);
+ binding.siteText.setText(homeMenuKey[1]);
+ binding.settingVodHistoryText.setText(homeMenuKey[2]);
+ binding.historyText.setText(homeMenuKey[3]);
+ }
+
+ private void setDialog() {
+ WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
+ params.width = (int) (ResUtil.getScreenWidth() * 0.4f);
+ dialog.getWindow().setAttributes(params);
+ dialog.getWindow().setDimAmount(0);
+ dialog.show();
+ }
+
+ private void showSiteDialog(View view) {
+ dialog.dismiss();
+ if (activity instanceof HomeActivity) ((HomeActivity) activity).showDialog();
+ }
+
+ private void showSettingVodHistory(View view) {
+ dialog.dismiss();
+ if (activity instanceof HomeActivity) ((HomeActivity) activity).showSettingVodHistory();
+ }
+
+ private void startHistory(View view) {
+ dialog.dismiss();
+ HistoryActivity.start(activity);
+ }
+}
diff --git a/app/src/leanback/res/layout/activity_home.xml b/app/src/leanback/res/layout/activity_home.xml
index c0a9a664e..9ce1ecc4d 100644
--- a/app/src/leanback/res/layout/activity_home.xml
+++ b/app/src/leanback/res/layout/activity_home.xml
@@ -44,21 +44,8 @@
android:focusable="false"
android:visibility="gone"
tools:visibility="visible" />
-
-
-
+ tools:text="切换站源" />
diff --git a/app/src/leanback/res/layout/dialog_menu.xml b/app/src/leanback/res/layout/dialog_menu.xml
new file mode 100644
index 000000000..3094172ea
--- /dev/null
+++ b/app/src/leanback/res/layout/dialog_menu.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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 ef74706e5..e8da2c1e6 100644
--- a/app/src/main/java/com/fongmi/android/tv/Setting.java
+++ b/app/src/main/java/com/fongmi/android/tv/Setting.java
@@ -389,6 +389,14 @@ public class Setting {
return Prefers.getInt("fullscreen_menu_key", 0);
}
+ public static void putHomeMenuKey(int key) {
+ Prefers.put("home_menu_key", key);
+ }
+
+ public static int getHomeMenuKey() {
+ return Prefers.getInt("home_menu_key", 0);
+ }
+
public static boolean isHomeSiteLock() {
return Prefers.getBoolean("home_site_lock", false);
}
@@ -413,14 +421,6 @@ public class Setting {
return Prefers.getInt("small_window_back_key", 0);
}
- public static void putHomeChangeConfig(boolean change) {
- Prefers.put("home_change_config", change);
- }
-
- public static boolean isHomeChangeConfig() {
- return Prefers.getBoolean("home_change_config", false);
- }
-
public static boolean isAggregatedSearch() {
return Prefers.getBoolean("aggregated_search", false);
}
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index f05fb8686..687bbe2f3 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -78,6 +78,7 @@
图片尺寸
聚合搜索
全屏菜单键
+ 首页菜单键
首页源锁定
无痕模式
小窗返回键
@@ -232,6 +233,13 @@
- 焦点移动
+
+ - 选项弹窗
+ - 切换站源
+ - 切换线路
+ - 历史页面
+
+
- 播放历史
- 站点推荐
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 20ec8c822..0b18aa94a 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -78,6 +78,7 @@
圖片尺寸
聚合搜索
全屏選單鍵
+ 首页選單鍵
首頁源鎖定
無痕模式
小窗返回鍵
@@ -232,6 +233,13 @@
- 焦點移動
+
+ - 選項彈窗
+ - 切換站源
+ - 切換線路
+ - 歷史頁面
+
+
- 播放歷史
- 站點推薦
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 04bebbbe9..8361ec831 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -78,6 +78,7 @@
Image size
Aggregated search
Fullscreen menu key
+ Home menu key
Home site lock
Incognito mode
Small window back key
@@ -232,6 +233,13 @@
- Episodes
+
+ - Select dialog
+ - Change site
+ - Change config
+ - History page
+
+
- Back
- Focus move