From 885993065c540f6bd59646a48d9ac2daf73a3e4c Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 15 Jul 2023 09:49:52 +0800 Subject: [PATCH] [leanback] optimize folder ux --- .../tv/ui/activity/DetailActivity.java | 20 ++++++++++++++++--- .../android/tv/ui/fragment/VodFragment.java | 12 +++++++---- .../com/fongmi/android/tv/bean/History.java | 5 +++-- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index be454246d..d47832044 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -130,7 +130,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } public static void cast(Activity activity, History history) { - start(activity, history.getSiteKey(), history.getVodId(), history.getVodName(), true, true); + start(activity, history.getSiteKey(), history.getVodId(), history.getVodName(), null, true, true); } public static void push(Activity activity, String url, boolean clear) { @@ -145,15 +145,24 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis start(activity, key, id, name, false); } + public static void start(Activity activity, String key, String id, String name, String mark) { + start(activity, key, id, name, mark, false); + } + public static void start(Activity activity, String key, String id, String name, boolean clear) { - start(activity, key, id, name, clear, false); + start(activity, key, id, name, null, clear, false); + } + + public static void start(Activity activity, String key, String id, String name, String mark, boolean clear) { + start(activity, key, id, name, mark, clear, false); } - public static void start(Activity activity, String key, String id, String name, boolean clear, boolean cast) { + public static void start(Activity activity, String key, String id, String name, String mark, boolean clear, boolean cast) { Intent intent = new Intent(activity, DetailActivity.class); if (clear) intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("cast", cast); intent.putExtra("name", name); + intent.putExtra("mark", mark); intent.putExtra("key", key); intent.putExtra("id", id); activity.startActivityForResult(intent, 1000); @@ -167,6 +176,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis return getIntent().getStringExtra("name"); } + private String getMark() { + return getIntent().getStringExtra("mark"); + } + private String getKey() { return getIntent().getStringExtra("key"); } @@ -811,6 +824,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private History createHistory(Vod item) { History history = new History(); history.setKey(getHistoryKey()); + history.setVodRemarks(getMark()); history.setCid(ApiConfig.getCid()); history.setVodPic(item.getVodPic()); history.setVodName(item.getVodName()); 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 d5a1e6082..41701e320 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 @@ -242,10 +242,14 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback @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()); + if (item.isFolder()) { + mPages.add(Page.get(item.getVodId(), mBinding.recycler.getSelectedPosition())); + mBinding.recycler.setMoveTop(false); + getVideo(item.getVodId(), "1"); + } else { + if (!isFolder()) DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName()); + else DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodName()); + } } @Override diff --git a/app/src/main/java/com/fongmi/android/tv/bean/History.java b/app/src/main/java/com/fongmi/android/tv/bean/History.java index f4d2d7089..68e2ed73a 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/History.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/History.java @@ -65,7 +65,8 @@ public class History { } public static List arrayFrom(String str) { - Type listType = new TypeToken>() {}.getType(); + Type listType = new TypeToken>() { + }.getType(); List items = new Gson().fromJson(str, listType); return items == null ? Collections.emptyList() : items; } @@ -310,7 +311,7 @@ public class History { public void findEpisode(List flags) { if (flags.size() > 0) { setVodFlag(flags.get(0).getFlag()); - if (flags.get(0).getEpisodes().size() > 0) { + if (getVodRemarks().isEmpty() && flags.get(0).getEpisodes().size() > 0) { setVodRemarks(flags.get(0).getEpisodes().get(0).getName()); } }