[leanback] refresh type by up key

pull/137/head
FongMi 3 years ago
parent 6449f1d2aa
commit ee2e2a854a
  1. 3
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java
  2. 8
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java
  3. 52
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTypeView.java
  4. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/presenter/TypePresenter.java
  5. 2
      app/src/leanback/res/layout/adapter_type.xml

@ -144,9 +144,8 @@ public class VodActivity extends BaseActivity implements TypePresenter.OnClickLi
} }
@Override @Override
public boolean onLongClick(Class item) { public void onRefresh(Class item) {
getFragment().onRefresh(); getFragment().onRefresh();
return true;
} }
@Override @Override

@ -38,6 +38,10 @@ public class CustomTitleView extends AppCompatTextView {
setOnClickListener(v -> listener.showDialog()); setOnClickListener(v -> listener.showDialog());
} }
private boolean hasEvent(KeyEvent event) {
return Utils.isEnterKey(event) || Utils.isLeftKey(event) || Utils.isRightKey(event);
}
@Override @Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(focused, direction, previouslyFocusedRect); super.onFocusChanged(focused, direction, previouslyFocusedRect);
@ -71,10 +75,6 @@ public class CustomTitleView extends AppCompatTextView {
return items.get(position); return items.get(position);
} }
private boolean hasEvent(KeyEvent event) {
return Utils.isEnterKey(event) || Utils.isLeftKey(event) || Utils.isRightKey(event);
}
public interface Listener extends SiteCallback { public interface Listener extends SiteCallback {
void showDialog(); void showDialog();

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

@ -23,7 +23,7 @@ public class TypePresenter extends Presenter {
void onItemClick(Class item); void onItemClick(Class item);
boolean onLongClick(Class item); void onRefresh(Class item);
} }
@Override @Override
@ -38,7 +38,7 @@ public class TypePresenter extends Presenter {
holder.binding.text.setText(item.getTypeName()); holder.binding.text.setText(item.getTypeName());
holder.binding.text.setCompoundDrawablePadding(ResUtil.dp2px(4)); holder.binding.text.setCompoundDrawablePadding(ResUtil.dp2px(4));
holder.binding.text.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, getIcon(item), 0); 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)); setOnClickListener(holder, view -> mListener.onItemClick(item));
} }

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" <com.fongmi.android.tv.ui.custom.CustomTypeView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/text" android:id="@+id/text"
android:layout_width="wrap_content" android:layout_width="wrap_content"

Loading…
Cancel
Save