From cbdb76b9c809aecd2f45e1fec47bf182558fbdea Mon Sep 17 00:00:00 2001 From: FongMi Date: Mon, 29 Jan 2024 01:51:09 +0800 Subject: [PATCH] Fix channel width --- .../android/tv/ui/activity/LiveActivity.java | 12 +++++++++-- .../com/fongmi/android/tv/bean/Group.java | 9 +++++++++ .../android/tv/ui/activity/LiveActivity.java | 20 +++++++++++++++---- .../android/tv/ui/activity/VideoActivity.java | 2 +- app/src/mobile/res/layout/activity_live.xml | 4 ++-- 5 files changed, 38 insertions(+), 9 deletions(-) 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 fed1ed2e8..63876bfdb 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 @@ -281,12 +281,19 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } private void setWidth(Live live) { + int padding = ResUtil.dp2px(48); for (Group item : live.getGroups()) live.setWidth(Math.max(live.getWidth(), ResUtil.getTextWidth(item.getName(), 16))); - mBinding.group.getLayoutParams().width = live.getWidth() == 0 ? 0 : Math.min(live.getWidth() + ResUtil.dp2px(50), ResUtil.dp2px(180)); - mBinding.channel.getLayoutParams().width = live.getLogo().isEmpty() ? ResUtil.dp2px(200) : ResUtil.dp2px(260); + mBinding.group.getLayoutParams().width = live.getWidth() == 0 ? 0 : Math.min(live.getWidth() + padding, ResUtil.dp2px(180)); mBinding.divide.setVisibility(live.getWidth() == 0 ? View.GONE : View.VISIBLE); } + private void setWidth(Group group) { + int logo = ResUtil.dp2px(60); + int padding = ResUtil.dp2px(60); + for (Channel item : group.getChannel()) group.setWidth(Math.max(group.getWidth(), (item.getLogo().isEmpty() ? 0 : logo) + ResUtil.getTextWidth(item.getNumber() + item.getName(), 16))); + mBinding.channel.getLayoutParams().width = Math.min(group.getWidth() + padding, ResUtil.getScreenWidth() / 2); + } + private void setPosition(int[] position) { if (position[0] == -1) return; if (mGroupAdapter.size() == 1) return; @@ -527,6 +534,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onItemClick(Group item) { + setWidth(item); mChannelAdapter.setItems(item.getChannel(), null); mBinding.channel.setSelectedPosition(Math.max(item.getPosition(), 0)); if (!item.isKeep() || ++count < 5 || mHides.isEmpty()) return; diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Group.java b/app/src/main/java/com/fongmi/android/tv/bean/Group.java index 10463c976..956a8f2bd 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Group.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Group.java @@ -26,6 +26,7 @@ public class Group { private boolean selected; private int position; + private int width; public static List arrayFrom(String str) { Type listType = new TypeToken>() {}.getType(); @@ -106,6 +107,14 @@ public class Group { this.position = position; } + public int getWidth() { + return width; + } + + public void setWidth(int width) { + this.width = width; + } + public boolean isHidden() { return !TextUtils.isEmpty(getPass()); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index dfc409472..5e1815963 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -31,6 +31,7 @@ import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.api.config.LiveConfig; import com.fongmi.android.tv.bean.Channel; import com.fongmi.android.tv.bean.Epg; +import com.fongmi.android.tv.bean.EpgData; import com.fongmi.android.tv.bean.Group; import com.fongmi.android.tv.bean.Keep; import com.fongmi.android.tv.bean.Live; @@ -304,12 +305,19 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List } private void setWidth(Live live) { + int padding = ResUtil.dp2px(48); for (Group item : live.getGroups()) live.setWidth(Math.max(live.getWidth(), ResUtil.getTextWidth(item.getName(), 14))); - mBinding.group.getLayoutParams().width = live.getWidth() == 0 ? 0 : Math.min(live.getWidth() + ResUtil.dp2px(44), ResUtil.dp2px(180)); - mBinding.channel.getLayoutParams().width = live.getLogo().isEmpty() ? ResUtil.dp2px(200) : ResUtil.dp2px(260); + mBinding.group.getLayoutParams().width = live.getWidth() == 0 ? 0 : Math.min(live.getWidth() + padding, ResUtil.dp2px(180)); mBinding.divide.setVisibility(live.getWidth() == 0 ? View.GONE : View.VISIBLE); } + private void setWidth(Group group) { + int logo = ResUtil.dp2px(56); + int padding = ResUtil.dp2px(52); + for (Channel item : group.getChannel()) group.setWidth(Math.max(group.getWidth(), (item.getLogo().isEmpty() ? 0 : logo) + ResUtil.getTextWidth(item.getNumber() + item.getName(), 14))); + mBinding.channel.getLayoutParams().width = Math.min(group.getWidth() + padding, ResUtil.getScreenWidth() / 2); + } + private void setPosition(int[] position) { if (position[0] == -1) return; if (mGroupAdapter.getItemCount() == 1) return; @@ -585,6 +593,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List @Override public void onItemClick(Group item) { + setWidth(item); mGroupAdapter.setSelected(mGroup = item); mChannelAdapter.addAll(item.getChannel()); mChannelAdapter.setSelected(item.getPosition()); @@ -639,6 +648,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List private void setInfo() { mViewModel.getEpg(mChannel); mChannel.loadLogo(mBinding.widget.logo); + mBinding.arrow.setVisibility(View.GONE); mBinding.widget.name.setText(mChannel.getName()); mBinding.control.title.setText(mChannel.getName()); mBinding.widget.namePip.setText(mChannel.getName()); @@ -653,9 +663,11 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List private void setEpg() { String epg = mChannel.getData().getEpg(); + List data = mChannel.getData().getList(); mBinding.widget.name.setMaxEms(epg.isEmpty() ? mChannel.getName().length() : 12); - mEpgDataAdapter.addAll(mChannel.getData().getList()); + mBinding.arrow.setVisibility(data.isEmpty() ? View.GONE : View.VISIBLE); mBinding.widget.play.setText(epg); + mEpgDataAdapter.addAll(data); setMetadata(); } @@ -1139,7 +1151,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List mPlayers.release(); Source.get().stop(); PlaybackService.stop(); - App.removeCallbacks(mR1, mR2, mR3); + App.removeCallbacks(mR0, mR1, mR2, mR3); mViewModel.url.removeObserver(mObserveUrl); mViewModel.epg.removeObserver(mObserveEpg); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index fa4ce2c6d..e04480aa2 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -1717,7 +1717,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo Timer.get().reset(); Source.get().stop(); RefreshEvent.history(); - App.removeCallbacks(mR1, mR2, mR3, mR4); + App.removeCallbacks(mR0, mR1, mR2, mR3, mR4); mViewModel.result.removeObserver(mObserveDetail); mViewModel.player.removeObserver(mObservePlayer); mViewModel.search.removeObserver(mObserveSearch); diff --git a/app/src/mobile/res/layout/activity_live.xml b/app/src/mobile/res/layout/activity_live.xml index 6ed160d7e..9bfb6a30c 100644 --- a/app/src/mobile/res/layout/activity_live.xml +++ b/app/src/mobile/res/layout/activity_live.xml @@ -94,12 +94,12 @@ android:id="@+id/arrow" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="center" + android:layout_gravity="center_vertical" android:layout_marginStart="-32dp" android:background="?attr/selectableItemBackgroundBorderless" android:padding="4dp" android:src="@drawable/ic_action_arrow" - android:visibility="gone" /> + android:visibility="visible" />