[leanback] optimize folder ux

pull/137/head
FongMi 3 years ago
parent 16a0860b03
commit dc2fa7e082
  1. 12
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomVerticalGridView.java
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java

@ -19,17 +19,19 @@ import java.util.List;
public class CustomVerticalGridView extends VerticalGridView {
private List<View> views;
private boolean moveTop;
public CustomVerticalGridView(@NonNull Context context) {
super(context);
this(context, null);
}
public CustomVerticalGridView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
this(context, attrs, 0);
}
public CustomVerticalGridView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setMoveTop(true);
}
@Override
@ -51,10 +53,14 @@ public class CustomVerticalGridView extends VerticalGridView {
this.views = Arrays.asList(views);
}
public void setMoveTop(boolean moveTop) {
this.moveTop = moveTop;
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_DOWN) return super.dispatchKeyEvent(event);
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) return moveToTop();
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && moveTop) return moveToTop();
return super.dispatchKeyEvent(event);
}

@ -233,12 +233,14 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
}
public void goBack() {
if (mPages.size() == 1) mBinding.recycler.setMoveTop(true);
mPages.remove(mPage = getLastPage());
onRefresh();
}
@Override
public void onItemClick(Vod item) {
if (item.isFolder()) mBinding.recycler.setMoveTop(false);
if (item.isFolder()) mPages.add(Page.get(item.getVodId(), mBinding.recycler.getSelectedPosition()));
if (item.isFolder()) getVideo(item.getVodId(), "1");
else DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName());

Loading…
Cancel
Save