From a8b3041181275cafaf8a40d38324afc9a4e32161 Mon Sep 17 00:00:00 2001 From: FongMi Date: Fri, 1 Jul 2022 15:55:31 +0800 Subject: [PATCH] Auto fit vod size, 5 or 6 --- .../main/java/com/fongmi/bear/bean/Result.java | 18 ++++++++++++------ .../fongmi/bear/ui/activity/HomeActivity.java | 5 ++--- .../ui/custom/CustomHorizontalGridView.java | 3 +-- .../fongmi/bear/ui/custom/CustomViewPager.java | 3 +-- .../fongmi/bear/ui/fragment/VodFragment.java | 5 ++--- .../fongmi/bear/ui/presenter/VodPresenter.java | 11 ++++++++++- 6 files changed, 28 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/fongmi/bear/bean/Result.java b/app/src/main/java/com/fongmi/bear/bean/Result.java index d318e23d9..8d5055402 100644 --- a/app/src/main/java/com/fongmi/bear/bean/Result.java +++ b/app/src/main/java/com/fongmi/bear/bean/Result.java @@ -2,6 +2,7 @@ package com.fongmi.bear.bean; import androidx.annotation.NonNull; +import com.google.common.collect.Lists; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonDeserializationContext; @@ -61,6 +62,17 @@ public class Result { return filters == null ? new LinkedHashMap<>() : filters; } + public List> partition() { + if (getList().size() % 6 == 0) return Lists.partition(getList(), 6); + else return Lists.partition(getList(), 5); + } + + @NonNull + @Override + public String toString() { + return new Gson().toJson(this); + } + static class FiltersAdapter implements JsonDeserializer>> { @Override @@ -78,10 +90,4 @@ public class Result { return filterMap; } } - - @NonNull - @Override - public String toString() { - return new Gson().toJson(this); - } } diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java index 552de045a..7ab671344 100644 --- a/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java +++ b/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java @@ -22,7 +22,6 @@ import com.fongmi.bear.ui.presenter.FuncPresenter; import com.fongmi.bear.ui.presenter.TitlePresenter; import com.fongmi.bear.ui.presenter.VodPresenter; import com.fongmi.bear.utils.ResUtil; -import com.google.common.collect.Lists; import java.util.List; @@ -68,8 +67,8 @@ public class HomeActivity extends BaseActivity { private void setViewModel() { mSiteViewModel = new ViewModelProvider(this).get(SiteViewModel.class); mSiteViewModel.mResult.observe(this, result -> { - for (List items : Lists.partition(result.getList(), 5)) { - ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter()); + for (List items : result.partition()) { + ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(items.size())); adapter.addAll(0, items); mAdapter.add(new ListRow(adapter)); } diff --git a/app/src/main/java/com/fongmi/bear/ui/custom/CustomHorizontalGridView.java b/app/src/main/java/com/fongmi/bear/ui/custom/CustomHorizontalGridView.java index f38d56ea6..7dcee7d3f 100644 --- a/app/src/main/java/com/fongmi/bear/ui/custom/CustomHorizontalGridView.java +++ b/app/src/main/java/com/fongmi/bear/ui/custom/CustomHorizontalGridView.java @@ -89,8 +89,7 @@ public class CustomHorizontalGridView extends HorizontalGridView { currentFocused = null; } else if (currentFocused != null) { boolean isChild = false; - for (ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup; - parent = parent.getParent()) { + for (ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup; parent = parent.getParent()) { if (parent == this) { isChild = true; break; diff --git a/app/src/main/java/com/fongmi/bear/ui/custom/CustomViewPager.java b/app/src/main/java/com/fongmi/bear/ui/custom/CustomViewPager.java index d7e2a803f..cfc00a8cc 100644 --- a/app/src/main/java/com/fongmi/bear/ui/custom/CustomViewPager.java +++ b/app/src/main/java/com/fongmi/bear/ui/custom/CustomViewPager.java @@ -74,8 +74,7 @@ public class CustomViewPager extends ViewPager { currentFocused = null; } else if (currentFocused != null) { boolean isChild = false; - for (ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup; - parent = parent.getParent()) { + for (ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup; parent = parent.getParent()) { if (parent == this) { isChild = true; break; diff --git a/app/src/main/java/com/fongmi/bear/ui/fragment/VodFragment.java b/app/src/main/java/com/fongmi/bear/ui/fragment/VodFragment.java index c7563e21d..4fa7be4fb 100644 --- a/app/src/main/java/com/fongmi/bear/ui/fragment/VodFragment.java +++ b/app/src/main/java/com/fongmi/bear/ui/fragment/VodFragment.java @@ -24,7 +24,6 @@ import com.fongmi.bear.ui.presenter.FilterPresenter; import com.fongmi.bear.ui.presenter.ProgressPresenter; import com.fongmi.bear.ui.presenter.VodPresenter; import com.fongmi.bear.utils.ResUtil; -import com.google.common.collect.Lists; import com.google.gson.Gson; import java.util.HashMap; @@ -89,8 +88,8 @@ public class VodFragment extends Fragment implements Scroller.Callback { mSiteViewModel.mResult.observe(getViewLifecycleOwner(), result -> { mAdapter.remove("progress"); mScroller.endLoading(result.getList().isEmpty()); - for (List items : Lists.partition(result.getList(), 5)) { - ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter()); + for (List items : result.partition()) { + ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(items.size())); adapter.addAll(0, items); mAdapter.add(new ListRow(adapter)); } diff --git a/app/src/main/java/com/fongmi/bear/ui/presenter/VodPresenter.java b/app/src/main/java/com/fongmi/bear/ui/presenter/VodPresenter.java index c112bcd60..ca084b360 100644 --- a/app/src/main/java/com/fongmi/bear/ui/presenter/VodPresenter.java +++ b/app/src/main/java/com/fongmi/bear/ui/presenter/VodPresenter.java @@ -9,11 +9,17 @@ import androidx.leanback.widget.Presenter; import com.fongmi.bear.bean.Func; import com.fongmi.bear.bean.Vod; import com.fongmi.bear.databinding.AdapterVodBinding; +import com.fongmi.bear.utils.ResUtil; import com.fongmi.bear.utils.Utils; public class VodPresenter extends Presenter { private OnClickListener mListener; + private final int mCount; + + public VodPresenter(int count) { + mCount = count; + } public interface OnClickListener { void onItemClick(Func item); @@ -25,7 +31,10 @@ public class VodPresenter extends Presenter { @Override public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) { - return new ViewHolder(AdapterVodBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); + ViewHolder holder = new ViewHolder(AdapterVodBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); + holder.binding.getRoot().getLayoutParams().width = ResUtil.dp2px(mCount == 5 ? 150 : 144); + holder.binding.getRoot().getLayoutParams().height = ResUtil.dp2px(mCount == 5 ? 200 : 192); + return holder; } @Override