From cac80bc78be28e076015e682c1e20191eaae4de6 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 19 Oct 2023 15:15:08 +0800 Subject: [PATCH] [leanback] support home style --- .../android/tv/ui/activity/HomeActivity.java | 14 ++++++++++---- .../fongmi/android/tv/ui/fragment/VodFragment.java | 2 +- .../java/com/fongmi/android/tv/bean/Result.java | 4 ++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 62d92fe4b..7662bb71a 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -27,6 +27,7 @@ import com.fongmi.android.tv.bean.Func; import com.fongmi.android.tv.bean.History; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Site; +import com.fongmi.android.tv.bean.Style; import com.fongmi.android.tv.bean.Vod; import com.fongmi.android.tv.databinding.ActivityHomeBinding; import com.fongmi.android.tv.event.CastEvent; @@ -70,6 +71,10 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen private Result mResult; private Clock mClock; + private Site getHome() { + return ApiConfig.get().getHome(); + } + @Override protected ViewBinding getBinding() { return mBinding = ActivityHomeBinding.inflate(getLayoutInflater()); @@ -187,17 +192,18 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen private void getVideo() { mResult = Result.empty(); int index = getRecommendIndex(); - String home = ApiConfig.get().getHome().getName(); - mBinding.title.setText(home.isEmpty() ? ResUtil.getString(R.string.app_name) : home); + String title = getHome().getName(); + mBinding.title.setText(title.isEmpty() ? ResUtil.getString(R.string.app_name) : title); if (mAdapter.size() > index) mAdapter.removeItems(index, mAdapter.size() - index); - if (ApiConfig.get().getHome().getKey().isEmpty()) return; + if (getHome().getKey().isEmpty()) return; mViewModel.homeContent(); mAdapter.add("progress"); } private void addVideo(Result result) { + Style style = result.getStyle(getHome().getStyle()); for (List items : Lists.partition(result.getList(), Product.getColumn())) { - ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(this)); + ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(this, style)); adapter.setItems(items, null); mAdapter.add(new ListRow(adapter)); } 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 248a40137..4ac34fcca 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 @@ -170,7 +170,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback } private void addVideo(Result result) { - Style style = result.getList().get(0).getStyle(getStyle()); + Style style = result.getStyle(getStyle()); if (style.isList()) mAdapter.addAll(mAdapter.size(), result.getList()); else addGrid(result.getList(), style); } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Result.java b/app/src/main/java/com/fongmi/android/tv/bean/Result.java index 61cf52b4a..fde27d8d6 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Result.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Result.java @@ -272,6 +272,10 @@ public class Result implements Parcelable { return Json.toMap(getHeader()); } + public Style getStyle(Style style) { + return getList().isEmpty() ? Style.rect() : getList().get(0).getStyle(style); + } + public Result clear() { getList().clear(); return this;