From 86a171acbaec0658b5eead5ca1b0108ec001341e Mon Sep 17 00:00:00 2001 From: okjack Date: Thu, 28 Mar 2024 15:39:28 +0800 Subject: [PATCH] HomeMenuKey --- .../android/tv/ui/activity/HomeActivity.java | 11 +-- .../tv/ui/activity/SettingCustomActivity.java | 16 ++-- .../android/tv/ui/dialog/MenuKeyDialog.java | 78 +++++++++++++++++++ 3 files changed, 93 insertions(+), 12 deletions(-) create mode 100644 app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuKeyDialog.java 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 a6698e23b..1bad08d74 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 @@ -482,11 +482,12 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen if (Setting.getHomeMenuKey() == 0) MenuDialog.create(this).show(); else if (Setting.getHomeMenuKey() == 1) SiteDialog.create(this).show(); else if (Setting.getHomeMenuKey() == 2) HistoryDialog.create(this).type(0).show(); - else if (Setting.getHomeMenuKey() == 3) HistoryActivity.start(this); - else if (Setting.getHomeMenuKey() == 4) SearchActivity.start(this); - else if (Setting.getHomeMenuKey() == 5) PushActivity.start(this); - else if (Setting.getHomeMenuKey() == 6) KeepActivity.start(this); - else if (Setting.getHomeMenuKey() == 7) SettingActivity.start(this); + else if (Setting.getHomeMenuKey() == 3) LiveActivity.start(this); + else if (Setting.getHomeMenuKey() == 4) HistoryActivity.start(this); + else if (Setting.getHomeMenuKey() == 5) SearchActivity.start(this); + else if (Setting.getHomeMenuKey() == 6) PushActivity.start(this); + else if (Setting.getHomeMenuKey() == 7) KeepActivity.start(this); + else if (Setting.getHomeMenuKey() == 8) SettingActivity.start(this); } if (!isHomeFragment && KeyUtil.isMenuKey(event)) updateFilter((Class) mAdapter.get(mBinding.pager.getCurrentItem())); if (!isHomeFragment && KeyUtil.isBackKey(event) && event.isLongPress() && getFragment().goRoot()) setCoolDown(); 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 b61615237..7f5a5bfe6 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 @@ -13,6 +13,7 @@ import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.dialog.ButtonsDialog; import com.fongmi.android.tv.ui.dialog.DisplayDialog; +import com.fongmi.android.tv.ui.dialog.MenuKeyDialog; import com.fongmi.android.tv.utils.ResUtil; import java.util.Locale; @@ -25,7 +26,6 @@ public class SettingCustomActivity extends BaseActivity { private String[] episode; private String[] fullscreenMenuKey; private String[] smallWindowBackKey; - private String[] homeMenuKey; private String[] homeUI; @Override @@ -52,7 +52,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.homeMenuKeyText.setText((homeMenuKey = ResUtil.getStringArray(R.array.select_home_menu_key))[Setting.getHomeMenuKey()]); + mBinding.homeMenuKeyText.setText((ResUtil.getStringArray(R.array.select_home_menu_key))[Setting.getHomeMenuKey()]); mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch())); mBinding.homeUIText.setText((homeUI = ResUtil.getStringArray(R.array.select_home_ui))[Setting.getHomeUI()]); mBinding.homeHistoryText.setText(getSwitch(Setting.isHomeHistory())); @@ -70,7 +70,7 @@ public class SettingCustomActivity extends BaseActivity { mBinding.homeSiteLock.setOnClickListener(this::setHomeSiteLock); mBinding.incognito.setOnClickListener(this::setIncognito); mBinding.smallWindowBackKey.setOnClickListener(this::setSmallWindowBackKey); - mBinding.homeMenuKey.setOnClickListener(this::setHomeMenuKey); + mBinding.homeMenuKey.setOnClickListener(this::onHomeMenuKey); mBinding.aggregatedSearch.setOnClickListener(this::setAggregatedSearch); mBinding.homeUI.setOnClickListener(this::setHomeUI); mBinding.homeButtons.setOnClickListener(this::onHomeButtons); @@ -141,10 +141,12 @@ public class SettingCustomActivity extends BaseActivity { mBinding.smallWindowBackKeyText.setText(smallWindowBackKey[index]); } - 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 onHomeMenuKey(View view) { + MenuKeyDialog.create(this).show(); + } + + public void setHomeMenuText() { + mBinding.homeMenuKeyText.setText((ResUtil.getStringArray(R.array.select_home_menu_key))[Setting.getHomeMenuKey()]); } private void setAggregatedSearch(View view) { diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuKeyDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuKeyDialog.java new file mode 100644 index 000000000..dff4c9537 --- /dev/null +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuKeyDialog.java @@ -0,0 +1,78 @@ +package com.fongmi.android.tv.ui.dialog; + +import android.app.Activity; +import android.view.LayoutInflater; +import android.view.WindowManager; + +import androidx.appcompat.app.AlertDialog; +import androidx.recyclerview.widget.GridLayoutManager; + +import com.fongmi.android.tv.R; +import com.fongmi.android.tv.Setting; +import com.fongmi.android.tv.databinding.DialogMenuBinding; +import com.fongmi.android.tv.ui.activity.SettingCustomActivity; +import com.fongmi.android.tv.ui.adapter.MenuAdapter; +import com.fongmi.android.tv.ui.custom.SpaceItemDecoration; +import com.fongmi.android.tv.utils.ResUtil; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class MenuKeyDialog implements MenuAdapter.OnClickListener { + private final DialogMenuBinding binding; + private final MenuAdapter adapter; + private final AlertDialog dialog; + + private final Activity activity; + + + public static MenuKeyDialog create(Activity activity) { + return new MenuKeyDialog(activity); + } + + public MenuKeyDialog(Activity activity) { + String[] items = ResUtil.getStringArray(R.array.select_home_menu_key); + List mItems = new ArrayList<>(Arrays.asList(items)); + this.adapter = new MenuAdapter(this, mItems); + this.activity = activity; + this.binding = DialogMenuBinding.inflate(LayoutInflater.from(activity)); + this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); + } + + public void show() { + initView(); + } + + private void initView() { + setRecyclerView(); + setDialog(); + } + + private void setRecyclerView() { + binding.recycler.setAdapter(adapter); + binding.recycler.setHasFixedSize(true); + binding.recycler.setItemAnimator(null); + binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16)); + binding.recycler.setLayoutManager(new GridLayoutManager(dialog.getContext(), 1)); + binding.recycler.post(() -> binding.recycler.scrollToPosition(Setting.getHomeMenuKey())); + + } + + 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(); + } + + @Override + public void onItemClick(int position) { + if (dialog != null) dialog.dismiss(); + Setting.putHomeMenuKey(position); + ((SettingCustomActivity) activity).setHomeMenuText(); + } + +}