From e562a28acf5ed3e2c90078b1752b5e818959e2a5 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 25 Jan 2024 11:21:49 +0800 Subject: [PATCH] Support epg - part 4 --- .../android/tv/ui/activity/LiveActivity.java | 30 +++++------ app/src/leanback/res/layout/activity_live.xml | 2 +- .../android/tv/ui/activity/LiveActivity.java | 52 ++++++++----------- .../android/tv/ui/adapter/EpgAdapter.java | 9 +++- app/src/mobile/res/layout/activity_live.xml | 22 +------- .../mobile/res/layout/view_widget_live.xml | 12 +++++ 6 files changed, 60 insertions(+), 67 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 1067847b4..1b0acc8be 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 @@ -274,9 +274,9 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } private void setWidth(Live live) { - int base = ResUtil.dp2px(50); - for (Group group : live.getGroups()) live.setWidth(Math.max(live.getWidth(), ResUtil.getTextWidth(group.getName(), 16))); - mBinding.group.getLayoutParams().width = live.getWidth() == 0 ? 0 : Math.min(live.getWidth() + base, ResUtil.dp2px(200)); + 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(200)); + mBinding.channel.getLayoutParams().width = live.getLogo().isEmpty() ? ResUtil.dp2px(200) : ResUtil.dp2px(260); mBinding.divide.setVisibility(live.getWidth() == 0 ? View.GONE : View.VISIBLE); } @@ -465,17 +465,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick App.removeCallbacks(mR3); } - private void showEpg() { - String epg = mChannel.getData().getEpg(); - mBinding.widget.name.setMaxEms(epg.isEmpty() ? mChannel.getName().length() : 12); - mBinding.widget.play.setText(epg); - setMetadata(); - } - - private void setEpg(Epg epg) { - if (mChannel != null && mChannel.getName().equals(epg.getKey())) showEpg(); - } - private void setTraffic() { Traffic.setSpeed(mBinding.widget.traffic); App.post(mR2, Constant.INTERVAL_TRAFFIC); @@ -584,7 +573,18 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick mBinding.control.line.setText(mChannel.getLineText()); mBinding.widget.line.setVisibility(mChannel.getLineVisible()); mBinding.control.line.setVisibility(mChannel.getLineVisible()); - showEpg(); + setEpg(); + } + + private void setEpg() { + String epg = mChannel.getData().getEpg(); + mBinding.widget.name.setMaxEms(epg.isEmpty() ? mChannel.getName().length() : 12); + mBinding.widget.play.setText(epg); + setMetadata(); + } + + private void setEpg(Epg epg) { + if (mChannel != null && mChannel.getName().equals(epg.getKey())) setEpg(); } private void fetch() { diff --git a/app/src/leanback/res/layout/activity_live.xml b/app/src/leanback/res/layout/activity_live.xml index 8efaf333a..cfd24bbab 100644 --- a/app/src/leanback/res/layout/activity_live.xml +++ b/app/src/leanback/res/layout/activity_live.xml @@ -78,7 +78,7 @@ 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 6f93862a1..fa50d54d2 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 @@ -79,7 +79,7 @@ import java.util.List; import tv.danmaku.ijk.media.player.ui.IjkVideoView; -public class LiveActivity extends BaseActivity implements CustomKeyDownLive.Listener, TrackDialog.Listener, Biometric.Callback, PassCallback, LiveCallback, GroupAdapter.OnClickListener, ChannelAdapter.OnClickListener, SubtitleCallback, CastDialog.Listener, InfoDialog.Listener { +public class LiveActivity extends BaseActivity implements CustomKeyDownLive.Listener, TrackDialog.Listener, Biometric.Callback, PassCallback, LiveCallback, GroupAdapter.OnClickListener, ChannelAdapter.OnClickListener, EpgAdapter.OnClickListener, SubtitleCallback, CastDialog.Listener, InfoDialog.Listener { private ActivityLiveBinding mBinding; private ChannelAdapter mChannelAdapter; @@ -204,17 +204,13 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List mBinding.control.action.speed.setOnLongClickListener(view -> onSpeedLong()); mBinding.control.action.getRoot().setOnTouchListener(this::onActionTouch); mBinding.video.setOnTouchListener((view, event) -> mKeyDown.onTouchEvent(event)); - mBinding.channel.setOnTouchListener(this::onRecyclerTouch); - mBinding.group.setOnTouchListener(this::onRecyclerTouch); - mBinding.epg.setOnTouchListener(this::onRecyclerTouch); } private void setRecyclerView() { - mBinding.epg.setItemAnimator(null); mBinding.group.setItemAnimator(null); mBinding.channel.setItemAnimator(null); - mBinding.epg.setAdapter(mEpgAdapter = new EpgAdapter()); mBinding.group.setAdapter(mGroupAdapter = new GroupAdapter(this)); + mBinding.widget.epg.setAdapter(mEpgAdapter = new EpgAdapter(this)); mBinding.channel.setAdapter(mChannelAdapter = new ChannelAdapter(this)); } @@ -309,7 +305,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List 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(180) : ResUtil.dp2px(236); - mBinding.divide1.setVisibility(live.getWidth() == 0 ? View.GONE : View.VISIBLE); + mBinding.divide.setVisibility(live.getWidth() == 0 ? View.GONE : View.VISIBLE); } private void setPosition(int[] position) { @@ -331,7 +327,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List if (change) mChannelAdapter.addAll(mGroup.getChannel()); mChannelAdapter.setSelected(mGroup.getPosition()); mBinding.channel.scrollToPosition(mGroup.getPosition()); - mBinding.epg.scrollToPosition(mEpgAdapter.getPosition()); } private void onCast() { @@ -455,11 +450,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List return false; } - private boolean onRecyclerTouch(View v, MotionEvent e) { - if (e.getAction() == MotionEvent.ACTION_UP) onSingleTap(); - return true; - } - private void hideUI() { if (isGone(mBinding.recycler)) return; mBinding.recycler.setVisibility(View.GONE); @@ -529,20 +519,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List App.removeCallbacks(mR3); } - private void showEpg() { - String epg = mChannel.getData().getEpg(); - mBinding.widget.play.setText(epg); - mBinding.widget.name.setMaxEms(epg.isEmpty() ? mChannel.getName().length() : 12); - mBinding.epg.setVisibility(mChannel.getData().getList().isEmpty() ? View.GONE : View.VISIBLE); - mBinding.divide2.setVisibility(mChannel.getData().getList().isEmpty() ? View.GONE : View.VISIBLE); - mEpgAdapter.addAll(mChannel.getData().getList()); - setMetadata(); - } - - private void setEpg(Epg epg) { - if (mChannel != null && mChannel.getName().equals(epg.getKey())) showEpg(); - } - private void setTraffic() { Traffic.setSpeed(mBinding.widget.traffic); App.post(mR2, Constant.INTERVAL_TRAFFIC); @@ -623,6 +599,11 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List return true; } + @Override + public void onItemClick(Epg item) { + + } + private void addKeep(Channel item) { getKeep().add(item); Keep keep = new Keep(); @@ -649,7 +630,19 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List mBinding.widget.line.setVisibility(mChannel.getLineVisible()); mBinding.control.action.line.setText(mBinding.widget.line.getText()); mBinding.control.action.line.setVisibility(mBinding.widget.line.getVisibility()); - showEpg(); + setEpg(); + } + + private void setEpg() { + String epg = mChannel.getData().getEpg(); + mBinding.widget.name.setMaxEms(epg.isEmpty() ? mChannel.getName().length() : 12); + mEpgAdapter.addAll(mChannel.getData().getList()); + mBinding.widget.play.setText(epg); + setMetadata(); + } + + private void setEpg(Epg epg) { + if (mChannel != null && mChannel.getName().equals(epg.getKey())) setEpg(); } private void fetch() { @@ -674,8 +667,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List } private void resetAdapter() { - mBinding.divide1.setVisibility(View.GONE); - mBinding.divide2.setVisibility(View.GONE); + mBinding.divide.setVisibility(View.GONE); mChannelAdapter.clear(); mGroupAdapter.clear(); mEpgAdapter.clear(); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/EpgAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/EpgAdapter.java index 6425fc6d0..d7a255f31 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/EpgAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/EpgAdapter.java @@ -14,12 +14,19 @@ import java.util.List; public class EpgAdapter extends RecyclerView.Adapter { + private final OnClickListener mListener; private final List mItems; - public EpgAdapter() { + public EpgAdapter(OnClickListener listener) { + this.mListener = listener; this.mItems = new ArrayList<>(); } + public interface OnClickListener { + + void onItemClick(Epg item); + } + public void clear() { mItems.clear(); notifyDataSetChanged(); diff --git a/app/src/mobile/res/layout/activity_live.xml b/app/src/mobile/res/layout/activity_live.xml index 4924c37d1..f717ea525 100644 --- a/app/src/mobile/res/layout/activity_live.xml +++ b/app/src/mobile/res/layout/activity_live.xml @@ -72,7 +72,7 @@ tools:listitem="@layout/adapter_group" /> - - - - diff --git a/app/src/mobile/res/layout/view_widget_live.xml b/app/src/mobile/res/layout/view_widget_live.xml index b8e001393..a2ea34599 100644 --- a/app/src/mobile/res/layout/view_widget_live.xml +++ b/app/src/mobile/res/layout/view_widget_live.xml @@ -182,6 +182,18 @@ + +