From 4aefa87f6783d3301c00c8a5530b52f28b109df4 Mon Sep 17 00:00:00 2001 From: okjack Date: Thu, 29 Feb 2024 19:42:15 +0800 Subject: [PATCH] home menu key --- .../android/tv/ui/activity/HomeActivity.java | 12 +-- .../tv/ui/activity/SettingCustomActivity.java | 12 +-- .../android/tv/ui/custom/CustomTitleView.java | 1 - .../android/tv/ui/dialog/MenuDialog.java | 80 ++++++++++++++++++ app/src/leanback/res/layout/activity_home.xml | 13 --- .../res/layout/activity_setting_custom.xml | 8 +- app/src/leanback/res/layout/dialog_menu.xml | 81 +++++++++++++++++++ .../java/com/fongmi/android/tv/Setting.java | 16 ++-- app/src/main/res/values-zh-rCN/strings.xml | 8 ++ app/src/main/res/values-zh-rTW/strings.xml | 8 ++ app/src/main/res/values/strings.xml | 8 ++ 11 files changed, 211 insertions(+), 36 deletions(-) create mode 100644 app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuDialog.java create mode 100644 app/src/leanback/res/layout/dialog_menu.xml 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