From dc2fa7e0826ce89a7c90cd8786df1e93da7620c7 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 15 Jul 2023 00:48:07 +0800 Subject: [PATCH] [leanback] optimize folder ux --- .../android/tv/ui/custom/CustomVerticalGridView.java | 12 +++++++++--- .../fongmi/android/tv/ui/fragment/VodFragment.java | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomVerticalGridView.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomVerticalGridView.java index 1de01aac1..f6ca6fd0b 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomVerticalGridView.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomVerticalGridView.java @@ -19,17 +19,19 @@ import java.util.List; public class CustomVerticalGridView extends VerticalGridView { private List 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); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index b4cb326fc..ab804e95d 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -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());