~/Projects/tvbox
git clone https://code.lsong.org/tvbox
Commit
- Commit
- 5ba423c686de6143fabdaad63f9f9db02de350f7
- Author
- FongMi <[email protected]>
- Date
- 2023-11-15 18:44:50 +0800 +0800
- Diffstat
app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java | 1 app/src/leanback/res/layout/activity_live.xml | 3 app/src/main/java/com/fongmi/android/tv/bean/Live.java | 13 app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java | 7 app/src/mobile/res/layout/activity_live.xml | 15 app/src/mobile/res/layout/adapter_channel.xml | 7 app/src/mobile/res/layout/adapter_group.xml | 10
Dynamic live layout width
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 19724ae534327e73786efaee6a2f5bfe000d7ba8..0cd18f215244347200d1bf369c73f272843e6173 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -249,6 +249,7 @@ for (Group group : home.getGroups()) (group.isHidden() ? mHides : items).add(group); mGroupAdapter.setItems(items, null); setPosition(LiveConfig.get().find(items)); mBinding.control.home.setText(home.getName()); + mBinding.group.getLayoutParams().width = home.getWidth(); } private void setPosition(int[] position) { diff --git a/app/src/leanback/res/layout/activity_live.xml b/app/src/leanback/res/layout/activity_live.xml index c567a517b1768e49b58bafe0a1cfecd3d3f7baf3..43b1d7e9387e1a6f9a006b03e5907a2e00511f16 100644 --- a/app/src/leanback/res/layout/activity_live.xml +++ b/app/src/leanback/res/layout/activity_live.xml @@ -59,7 +59,8 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/shape_live_list" android:orientation="horizontal" - android:visibility="gone"> + android:visibility="gone" + tools:visibility="visible"> <com.fongmi.android.tv.ui.custom.CustomLiveListView android:id="@+id/group" diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Live.java b/app/src/main/java/com/fongmi/android/tv/bean/Live.java index 74ff2cb0c2e939ce4bdf19e06c0bbb724737c7e8..1d67f8d63285e537526b7e6ce97ef8ea09e5c4a4 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Live.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Live.java @@ -5,6 +5,7 @@ import android.text.TextUtils; import com.fongmi.android.tv.App; import com.fongmi.android.tv.Constant; +import com.fongmi.android.tv.utils.ResUtil; import com.google.gson.JsonElement; import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; @@ -167,6 +168,18 @@ public Group find(Group item) { for (Group group : getGroups()) if (group.getName().equals(item.getName())) return group; getGroups().add(item); return item; + } + + public boolean hasLogo() { + for (Group group : getGroups()) if (group.getLogo().length() > 0) return true; + return false; + } + + public int getWidth() { + int width = 0; + for (Group group : getGroups()) width = Math.max(width, ResUtil.getTextWidth(group.getName(), 16) + ResUtil.dp2px(60)); + if (hasLogo()) width += ResUtil.dp2px(48); + return width; } @Override diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java index c792aaefef293af68cbe3996600af0db6697bd8f..7b3a5590b07eb4c8131a28a0f0e9646b76518e33 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; +import android.graphics.Paint; import android.graphics.Point; import android.graphics.drawable.Drawable; import android.os.Build; @@ -128,5 +129,11 @@ } public static Display getDisplay(Activity activity) { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.R ? activity.getDisplay() : activity.getWindowManager().getDefaultDisplay(); + } + + public static int getTextWidth(String content, int textSize) { + Paint paint = new Paint(); + paint.setTextSize(sp2px(textSize)); + return (int) paint.measureText(content); } } diff --git a/app/src/mobile/res/layout/activity_live.xml b/app/src/mobile/res/layout/activity_live.xml index 0321c3e2568d102434a256a183f6a0480be2d502..38efdae533fcd44b71beeae11f102e4e1ab71db0 100644 --- a/app/src/mobile/res/layout/activity_live.xml +++ b/app/src/mobile/res/layout/activity_live.xml @@ -62,14 +62,11 @@ android:visibility="gone"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/group" - android:layout_width="120dp" + android:layout_width="wrap_content" android:layout_height="match_parent" android:clipChildren="false" android:clipToPadding="false" - android:paddingStart="8dp" - android:paddingTop="8dp" - android:paddingEnd="8dp" - android:paddingBottom="8dp" + android:padding="8dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" tools:itemCount="5" tools:listitem="@layout/adapter_group" /> @@ -81,15 +78,13 @@ android:background="@color/grey_700" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/channel" - android:layout_width="260dp" + android:layout_width="wrap_content" android:layout_height="match_parent" android:clipChildren="false" android:clipToPadding="false" - android:paddingStart="8dp" - android:paddingTop="8dp" + android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" - <FrameLayout - android:paddingBottom="8dp" + android:padding="8dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" tools:itemCount="5" tools:listitem="@layout/adapter_channel" /> diff --git a/app/src/mobile/res/layout/adapter_channel.xml b/app/src/mobile/res/layout/adapter_channel.xml index 208cf519db431308c828d54d38d5d6b79a9bd65a..a3c4c6eb28aba9869767ebda0aa001760e8fefac 100644 --- a/app/src/mobile/res/layout/adapter_channel.xml +++ b/app/src/mobile/res/layout/adapter_channel.xml @@ -3,15 +3,17 @@xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" + xmlns:tools="http://schemas.android.com/tools" android:layout_marginTop="4dp" + xmlns:tools="http://schemas.android.com/tools" android:layout_marginBottom="4dp" android:background="@drawable/shape_channel" android:gravity="center" android:orientation="horizontal" android:paddingStart="12dp" - android:paddingTop="8dp" + android:paddingTop="6dp" android:paddingEnd="12dp" - android:paddingBottom="8dp"> + android:paddingBottom="6dp"> <TextView android:id="@+id/number" @@ -37,6 +39,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:duplicateParentState="true" android:ellipsize="marquee" + android:maxEms="10" android:singleLine="true" android:textColor="@color/channel" android:textSize="14sp" diff --git a/app/src/mobile/res/layout/adapter_group.xml b/app/src/mobile/res/layout/adapter_group.xml index d7ec5d2aacf09292c5d2ea70b26e6a1d3713f628..4455ff918d0193baec18b0b589fe98c063074af0 100644 --- a/app/src/mobile/res/layout/adapter_group.xml +++ b/app/src/mobile/res/layout/adapter_group.xml @@ -3,15 +3,15 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="4dp" + android:layout_marginTop="6dp" - android:layout_marginBottom="4dp" + android:layout_marginBottom="6dp" android:background="@drawable/shape_group" android:gravity="center" android:orientation="horizontal" android:paddingStart="12dp" - android:paddingTop="8dp" + android:paddingTop="6dp" android:paddingEnd="12dp" - android:paddingBottom="8dp"> + android:paddingBottom="6dp"> <ImageView android:id="@+id/logo" @@ -27,6 +27,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:duplicateParentState="true" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:background="@drawable/shape_group" + xmlns:tools="http://schemas.android.com/tools" android:background="@drawable/shape_group" android:singleLine="true" android:textColor="@color/group"