From ee2e2a854a33ff7efa78c91dffca117b8b8d9835 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 27 May 2023 18:21:10 +0800 Subject: [PATCH] [leanback] refresh type by up key --- .../android/tv/ui/activity/VodActivity.java | 3 +- .../android/tv/ui/custom/CustomTitleView.java | 8 +-- .../android/tv/ui/custom/CustomTypeView.java | 52 +++++++++++++++++++ .../tv/ui/presenter/TypePresenter.java | 4 +- app/src/leanback/res/layout/adapter_type.xml | 2 +- 5 files changed, 60 insertions(+), 9 deletions(-) create mode 100644 app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTypeView.java diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java index 9876c9194..fc4799d46 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java @@ -144,9 +144,8 @@ public class VodActivity extends BaseActivity implements TypePresenter.OnClickLi } @Override - public boolean onLongClick(Class item) { + public void onRefresh(Class item) { getFragment().onRefresh(); - return true; } @Override 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 0ebb5c0ec..516d4b449 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 @@ -38,6 +38,10 @@ public class CustomTitleView extends AppCompatTextView { setOnClickListener(v -> listener.showDialog()); } + private boolean hasEvent(KeyEvent event) { + return Utils.isEnterKey(event) || Utils.isLeftKey(event) || Utils.isRightKey(event); + } + @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); @@ -71,10 +75,6 @@ public class CustomTitleView extends AppCompatTextView { return items.get(position); } - private boolean hasEvent(KeyEvent event) { - return Utils.isEnterKey(event) || Utils.isLeftKey(event) || Utils.isRightKey(event); - } - public interface Listener extends SiteCallback { void showDialog(); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTypeView.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTypeView.java new file mode 100644 index 000000000..734ca8460 --- /dev/null +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTypeView.java @@ -0,0 +1,52 @@ +package com.fongmi.android.tv.ui.custom; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.KeyEvent; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatTextView; + +import com.fongmi.android.tv.App; +import com.fongmi.android.tv.utils.Utils; + +public class CustomTypeView extends AppCompatTextView { + + private Listener listener; + private boolean coolDown; + + public CustomTypeView(@NonNull Context context) { + super(context); + } + + public CustomTypeView(@NonNull Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public void setListener(Listener listener) { + this.listener = listener; + } + + private boolean hasEvent(KeyEvent event) { + return !coolDown && event.getAction() == KeyEvent.ACTION_DOWN && Utils.isUpKey(event); + } + + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + if (hasEvent(event)) return onKeyDown(); + else return super.dispatchKeyEvent(event); + } + + private boolean onKeyDown() { + App.post(() -> coolDown = false, 5000); + listener.onRefresh(); + coolDown = true; + return true; + } + + public interface Listener { + + void onRefresh(); + } +} diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/TypePresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/TypePresenter.java index b6759b055..3f4332b38 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/TypePresenter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/TypePresenter.java @@ -23,7 +23,7 @@ public class TypePresenter extends Presenter { void onItemClick(Class item); - boolean onLongClick(Class item); + void onRefresh(Class item); } @Override @@ -38,7 +38,7 @@ public class TypePresenter extends Presenter { holder.binding.text.setText(item.getTypeName()); holder.binding.text.setCompoundDrawablePadding(ResUtil.dp2px(4)); holder.binding.text.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, getIcon(item), 0); - holder.view.setOnLongClickListener(view -> mListener.onLongClick(item)); + holder.binding.text.setListener(() -> mListener.onRefresh(item)); setOnClickListener(holder, view -> mListener.onItemClick(item)); } diff --git a/app/src/leanback/res/layout/adapter_type.xml b/app/src/leanback/res/layout/adapter_type.xml index 9d7b4fcde..bcc8f5848 100644 --- a/app/src/leanback/res/layout/adapter_type.xml +++ b/app/src/leanback/res/layout/adapter_type.xml @@ -1,5 +1,5 @@ -