Improve filter UX

pull/102/head
FongMi 4 years ago
parent c7f69dc0d2
commit b0369c2dee
  1. 31
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VodActivity.java
  2. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java
  3. 11
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomHorizontalGridView.java
  4. 24
      app/src/leanback/res/layout/dialog_config.xml
  5. 5
      app/src/main/java/com/fongmi/android/tv/bean/Class.java

@ -2,6 +2,7 @@ package com.fongmi.android.tv.ui.activity;
import android.app.Activity;
import android.content.Intent;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
@ -65,6 +66,7 @@ public class VodActivity extends BaseActivity {
@Override
protected void initEvent() {
mTypePresenter.setOnClickListener(this::updateFilter);
mBinding.pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
@ -81,12 +83,6 @@ public class VodActivity extends BaseActivity {
mOldView.setActivated(true);
}
});
mTypePresenter.setOnClickListener(item -> {
int index = mResult.getTypes().indexOf(item);
if (index != mBinding.pager.getCurrentItem()) mBinding.pager.setCurrentItem(index);
else item.setFilter(item.getFilter() == null ? null : !item.getFilter());
if (item.getFilter() != null) updateFilter(item.getFilter());
});
}
private void setRecyclerView() {
@ -107,9 +103,26 @@ public class VodActivity extends BaseActivity {
mBinding.pager.setAdapter(mPageAdapter = new PageAdapter(getSupportFragmentManager()));
}
private void updateFilter(boolean filter) {
mAdapter.notifyArrayItemRangeChanged(0, mAdapter.size());
getVodFragment().toggleFilter(filter);
private void updateFilter(Class item) {
if (item.getFilter() != null) {
item.toggleFilter();
getVodFragment().toggleFilter(item.getFilter());
mAdapter.notifyArrayItemRangeChanged(0, mAdapter.size());
}
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
boolean isMenuUp = event.getAction() == KeyEvent.ACTION_UP && event.getKeyCode() == KeyEvent.KEYCODE_MENU;
if (isMenuUp) updateFilter(mResult.getTypes().get(mBinding.pager.getCurrentItem()));
return super.dispatchKeyEvent(event);
}
@Override
public void onBackPressed() {
Class item = mResult.getTypes().get(mBinding.pager.getCurrentItem());
if (item.getFilter()) updateFilter(item);
else super.onBackPressed();
}
private VodFragment getVodFragment() {

@ -12,6 +12,7 @@ import androidx.appcompat.app.AlertDialog;
import com.fongmi.android.tv.databinding.DialogConfigBinding;
import com.fongmi.android.tv.event.ServerEvent;
import com.fongmi.android.tv.server.Server;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.QRCode;
import com.fongmi.android.tv.utils.ResUtil;
@ -57,6 +58,7 @@ public class ConfigDialog implements DialogInterface.OnDismissListener {
}
private void initEvent() {
binding.history.setOnClickListener(this::onHistory);
binding.positive.setOnClickListener(this::onPositive);
binding.negative.setOnClickListener(this::onNegative);
binding.text.setOnEditorActionListener((textView, actionId, event) -> {
@ -75,6 +77,10 @@ public class ConfigDialog implements DialogInterface.OnDismissListener {
dialog.dismiss();
}
private void onHistory(View view) {
Notify.show("尚未開發");
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onServerEvent(ServerEvent event) {
if (event.getType() != ServerEvent.Type.API) return;

@ -55,16 +55,7 @@ public class CustomHorizontalGridView extends HorizontalGridView {
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (getSelectedPosition() != 0) {
if (getVisibility() != View.VISIBLE) setVisibility(View.VISIBLE);
setSelectedPositionSmooth(0);
return true;
}
}
}
public boolean dispatchKeyEvent(@NonNull KeyEvent event) {
return super.dispatchKeyEvent(event) || executeKeyEvent(event);
}

@ -29,36 +29,46 @@
android:layout_alignStart="@+id/text"
android:layout_alignBottom="@+id/code"
android:layout_marginTop="16dp"
android:gravity="end"
android:orientation="horizontal">
<Button
<TextView
android:id="@+id/history"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_weight="1"
android:backgroundTint="@color/grey_700"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:singleLine="true"
android:text="@string/setting_history"
android:textColor="@color/white" />
<Button
<TextView
android:id="@+id/negative"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_weight="1"
android:backgroundTint="@color/grey_700"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:singleLine="true"
android:text="@string/dialog_negative"
android:textColor="@color/white" />
<Button
<TextView
android:id="@+id/positive"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/grey_700"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:singleLine="true"
android:text="@string/dialog_positive"
android:textColor="@color/white" />

@ -35,6 +35,11 @@ public class Class {
return filter;
}
public void toggleFilter() {
if (getFilter() == null) return;
setFilter(!getFilter());
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;

Loading…
Cancel
Save