home menu key

pull/325/head
okjack 2 years ago
parent 83da9ff510
commit 4aefa87f67
  1. 12
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 12
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java
  3. 1
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java
  4. 80
      app/src/leanback/java/com/fongmi/android/tv/ui/dialog/MenuDialog.java
  5. 13
      app/src/leanback/res/layout/activity_home.xml
  6. 8
      app/src/leanback/res/layout/activity_setting_custom.xml
  7. 81
      app/src/leanback/res/layout/dialog_menu.xml
  8. 16
      app/src/main/java/com/fongmi/android/tv/Setting.java
  9. 8
      app/src/main/res/values-zh-rCN/strings.xml
  10. 8
      app/src/main/res/values-zh-rTW/strings.xml
  11. 8
      app/src/main/res/values/strings.xml

@ -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);
}

@ -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) {

@ -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);
}

@ -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);
}
}

@ -44,21 +44,8 @@
android:focusable="false"
android:visibility="gone"
tools:visibility="visible" />
<ImageView
android:id="@+id/settingVodHistory"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="bottom"
android:layout_marginBottom="2dp"
android:background="@drawable/selector_image"
android:src="@drawable/ic_setting_vod_history"
android:focusable="true"
android:visibility="gone"
tools:visibility="visible" />
</LinearLayout>
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"

@ -420,7 +420,7 @@
android:orientation="horizontal">
<LinearLayout
android:id="@+id/homeChangeConfig"
android:id="@+id/homeMenuKey"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
@ -434,18 +434,18 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_home_change_config"
android:text="@string/setting_home_menu_key"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/homeChangeConfigText"
android:id="@+id/homeMenuKeyText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="" />
tools:text="切换站源" />
</LinearLayout>

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<LinearLayout
android:id="@+id/site"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_vertical"
android:layout_marginBottom="12dp"
android:orientation="horizontal">
<TextView
android:id="@+id/siteText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="marquee"
android:gravity="center"
android:singleLine="true"
android:textColor="@color/text"
android:textSize="18sp"
tools:text="泥巴" />
</LinearLayout>
<LinearLayout
android:id="@+id/settingVodHistory"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_vertical"
android:layout_marginBottom="12dp"
android:orientation="horizontal">
<TextView
android:id="@+id/settingVodHistoryText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="marquee"
android:gravity="center"
android:singleLine="true"
android:textColor="@color/text"
android:textSize="18sp"
tools:text="泥巴" />
</LinearLayout>
<LinearLayout
android:id="@+id/history"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_vertical"
android:layout_marginBottom="12dp"
android:orientation="horizontal">
<TextView
android:id="@+id/historyText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="marquee"
android:gravity="center"
android:singleLine="true"
android:textColor="@color/text"
android:textSize="18sp"
tools:text="泥巴" />
</LinearLayout>
</LinearLayout>

@ -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);
}

@ -78,6 +78,7 @@
<string name="setting_size">图片尺寸</string>
<string name="setting_aggregated_search">聚合搜索</string>
<string name="setting_fullscreen_menu_key">全屏菜单键</string>
<string name="setting_home_menu_key">首页菜单键</string>
<string name="setting_home_site_lock">首页源锁定</string>
<string name="setting_incognito">无痕模式</string>
<string name="setting_small_window_back_key">小窗返回键</string>
@ -232,6 +233,13 @@
<item>焦点移动</item>
</string-array>
<string-array name="select_home_menu_key">
<item>选项弹窗</item>
<item>切换站源</item>
<item>切换线路</item>
<item>历史页面</item>
</string-array>
<string-array name="select_home_recommend">
<item>播放历史</item>
<item>站点推荐</item>

@ -78,6 +78,7 @@
<string name="setting_size">圖片尺寸</string>
<string name="setting_aggregated_search">聚合搜索</string>
<string name="setting_fullscreen_menu_key">全屏選單鍵</string>
<string name="setting_home_menu_key">首页選單鍵</string>
<string name="setting_home_site_lock">首頁源鎖定</string>
<string name="setting_incognito">無痕模式</string>
<string name="setting_small_window_back_key">小窗返回鍵</string>
@ -232,6 +233,13 @@
<item>焦點移動</item>
</string-array>
<string-array name="select_home_menu_key">
<item>選項彈窗</item>
<item>切換站源</item>
<item>切換線路</item>
<item>歷史頁面</item>
</string-array>
<string-array name="select_home_recommend">
<item>播放歷史</item>
<item>站點推薦</item>

@ -78,6 +78,7 @@
<string name="setting_size">Image size</string>
<string name="setting_aggregated_search">Aggregated search</string>
<string name="setting_fullscreen_menu_key">Fullscreen menu key</string>
<string name="setting_home_menu_key">Home menu key</string>
<string name="setting_home_site_lock">Home site lock</string>
<string name="setting_incognito">Incognito mode</string>
<string name="setting_small_window_back_key">Small window back key</string>
@ -232,6 +233,13 @@
<item>Episodes</item>
</string-array>
<string-array name="select_home_menu_key">
<item>Select dialog</item>
<item>Change site</item>
<item>Change config</item>
<item>History page</item>
</string-array>
<string-array name="select_small_window_back_key">
<item>Back</item>
<item>Focus move</item>

Loading…
Cancel
Save