From 4673d0f4c5582095bb61e56ef9aa6d0c50afe1a3 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 5 Aug 2023 20:17:50 +0800 Subject: [PATCH] [mobile] support multi view type --- .../java/com/fongmi/android/tv/bean/Site.java | 9 +++- .../java/com/fongmi/android/tv/bean/Vod.java | 11 +++- app/src/main/res/values/styles.xml | 5 ++ .../java/com/fongmi/android/tv/Product.java | 20 +++++-- .../tv/ui/activity/CollectActivity.java | 15 ++---- .../android/tv/ui/adapter/VodAdapter.java | 52 +++++++++++-------- .../android/tv/ui/base/BaseVodHolder.java | 17 ++++++ .../fongmi/android/tv/ui/base/ViewType.java | 8 ++- .../android/tv/ui/fragment/TypeFragment.java | 25 ++++++--- .../android/tv/ui/holder/VodFolderHolder.java | 5 +- .../android/tv/ui/holder/VodFullHolder.java | 23 ++++++++ .../android/tv/ui/holder/VodGridHolder.java | 11 +++- .../android/tv/ui/holder/VodListHolder.java | 5 +- .../android/tv/ui/holder/VodOvalHolder.java | 34 ++++++++++++ .../mobile/res/drawable/shape_vod_circle.xml | 9 ++++ .../mobile/res/layout/adapter_vod_full.xml | 16 ++++++ .../mobile/res/layout/adapter_vod_oval.xml | 19 +++++++ 17 files changed, 229 insertions(+), 55 deletions(-) create mode 100644 app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseVodHolder.java create mode 100644 app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodFullHolder.java create mode 100644 app/src/mobile/java/com/fongmi/android/tv/ui/holder/VodOvalHolder.java create mode 100644 app/src/mobile/res/drawable/shape_vod_circle.xml create mode 100644 app/src/mobile/res/layout/adapter_vod_full.xml create mode 100644 app/src/mobile/res/layout/adapter_vod_oval.xml diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Site.java b/app/src/main/java/com/fongmi/android/tv/bean/Site.java index d135a8b77..7c83d7a15 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Site.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Site.java @@ -8,13 +8,14 @@ import androidx.room.PrimaryKey; import com.fongmi.android.tv.db.AppDatabase; import com.fongmi.android.tv.gson.StringAdapter; +import com.fongmi.android.tv.ui.base.ViewType; import com.google.gson.JsonElement; import com.google.gson.annotations.SerializedName; import java.util.Collections; import java.util.List; -@Entity(ignoredColumns = {"type", "api", "playUrl", "playerType", "ext", "jar", "categories"}) +@Entity(ignoredColumns = {"type", "api", "playUrl", "viewType", "playerType", "ext", "jar", "categories"}) public class Site { @NonNull @@ -29,6 +30,8 @@ public class Site { private String api; @SerializedName("playUrl") private String playUrl; + @SerializedName("viewType") + private Integer viewType; @SerializedName("playerType") private Integer playerType; @SerializedName("searchable") @@ -101,6 +104,10 @@ public class Site { this.api = api; } + public Integer getViewType() { + return viewType == null ? ViewType.GRID : viewType; + } + public String getPlayUrl() { return TextUtils.isEmpty(playUrl) ? "" : playUrl; } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java index a46a49169..8accd946a 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Vod.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Vod.java @@ -5,6 +5,7 @@ import android.view.View; import androidx.annotation.NonNull; +import com.fongmi.android.tv.ui.base.ViewType; import com.fongmi.android.tv.utils.Trans; import com.fongmi.android.tv.utils.Utils; import com.google.gson.Gson; @@ -200,8 +201,14 @@ public class Vod { return getVodTag().equals("folder") || getVodTag().equals("cover"); } - public boolean isList(boolean folder) { - return getVodShow().isEmpty() ? folder : getVodShow().equals("list"); + public int getViewType(int viewType) { + if (getVodShow().isEmpty()) return viewType; + if (getVodShow().equals("grid")) return ViewType.GRID; + if (getVodShow().equals("land")) return ViewType.LAND; + if (getVodShow().equals("oval")) return ViewType.OVAL; + if (getVodShow().equals("full")) return ViewType.FULL; + if (getVodShow().equals("list")) return ViewType.FOLDER; + return ViewType.GRID; } public String getVodName(String name) { diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index b03f253c5..bf359f56a 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -8,6 +8,11 @@ 8dp + +