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 5ba939e06..33b2c4067 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 @@ -266,13 +266,12 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick mBinding.group.getLayoutParams().width = live.getWidth() == 0 ? 0 : Math.min(live.getWidth() + padding, ResUtil.getScreenWidth() / 4); } - private Group setWidth(Group group) { + private void setWidth(Group group) { int logo = ResUtil.dp2px(60); int padding = ResUtil.dp2px(60); if (group.isKeep()) group.setWidth(0); if (group.getWidth() == 0) 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 = group.getWidth() == 0 ? 0 : Math.min(group.getWidth() + padding, ResUtil.getScreenWidth() / 2); - return group; + mBinding.channel.getLayoutParams().width = group.getWidth() == 0 ? 1 : Math.min(group.getWidth() + padding, ResUtil.getScreenWidth() / 2); } private void setWidth(Epg epg) { @@ -310,6 +309,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick mOldView = child.itemView; mOldView.setSelected(true); onItemClick(group); + setWidth(group); resetPass(); } @@ -525,7 +525,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onItemClick(Group item) { - mChannelAdapter.setItems(setWidth(item).getChannel(), null); + mChannelAdapter.setItems(item.getChannel(), null); mBinding.channel.setSelectedPosition(Math.max(item.getPosition(), 0)); if (!item.isKeep() || ++count < 5 || mHides.isEmpty()) return; PassDialog.create().show(this); @@ -788,7 +788,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick if (mGroup == null) return; int position = mGroup.getPosition() - 1; boolean limit = position < 0; - if (Setting.isAcross() & limit) prevGroup(true); + if (Setting.isAcross() & limit) prevGroup(); else mGroup.setPosition(limit ? mChannelAdapter.size() - 1 : position); if (!mGroup.isEmpty()) setChannel(mGroup.current()); } @@ -797,11 +797,35 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick if (mGroup == null) return; int position = mGroup.getPosition() + 1; boolean limit = position > mChannelAdapter.size() - 1; - if (Setting.isAcross() && limit) nextGroup(true); + if (Setting.isAcross() && limit) nextGroup(); else mGroup.setPosition(limit ? 0 : position); if (!mGroup.isEmpty()) setChannel(mGroup.current()); } + private boolean nextGroup() { + int position = mBinding.group.getSelectedPosition() + 1; + if (position > mGroupAdapter.size() - 1) position = 0; + if (mGroup.equals(mGroupAdapter.get(position))) return false; + mGroup = (Group) mGroupAdapter.get(position); + mBinding.group.setSelectedPosition(position); + if (mGroup.skip()) return nextGroup(); + mChannelAdapter.setItems(mGroup.getChannel(), null); + mGroup.setPosition(0); + return true; + } + + private boolean prevGroup() { + int position = mBinding.group.getSelectedPosition() - 1; + if (position < 0) position = mGroupAdapter.size() - 1; + if (mGroup.equals(mGroupAdapter.get(position))) return false; + mGroup = (Group) mGroupAdapter.get(position); + mBinding.group.setSelectedPosition(position); + if (mGroup.skip()) return prevGroup(); + mChannelAdapter.setItems(mGroup.getChannel(), null); + mGroup.setPosition(mGroup.getChannel().size() - 1); + return true; + } + private void checkNext() { int current = mChannel.getData().getInRange(); int position = mChannel.getData().getSelected() + 1; @@ -860,32 +884,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick App.post(mR4, Constant.INTERVAL_HIDE); } - @Override - public boolean nextGroup(boolean skip) { - int position = mBinding.group.getSelectedPosition() + 1; - if (position > mGroupAdapter.size() - 1) position = 0; - if (mGroup.equals(mGroupAdapter.get(position))) return false; - mGroup = (Group) mGroupAdapter.get(position); - mBinding.group.setSelectedPosition(position); - if (skip && mGroup.skip()) return nextGroup(true); - mChannelAdapter.setItems(mGroup.getChannel(), null); - mGroup.setPosition(0); - return true; - } - - @Override - public boolean prevGroup(boolean skip) { - int position = mBinding.group.getSelectedPosition() - 1; - if (position < 0) position = mGroupAdapter.size() - 1; - if (mGroup.equals(mGroupAdapter.get(position))) return false; - mGroup = (Group) mGroupAdapter.get(position); - mBinding.group.setSelectedPosition(position); - if (skip && mGroup.skip()) return prevGroup(true); - mChannelAdapter.setItems(mGroup.getChannel(), null); - mGroup.setPosition(mGroup.getChannel().size() - 1); - return true; - } - @Override public boolean dispatch(boolean check) { return !check || isGone(mBinding.recycler) && isGone(mBinding.control.getRoot()); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomLiveListView.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomLiveListView.java index d270b951d..ca1e6ea86 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomLiveListView.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomLiveListView.java @@ -9,7 +9,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.leanback.widget.VerticalGridView; -import com.fongmi.android.tv.R; import com.fongmi.android.tv.utils.KeyUtil; public class CustomLiveListView extends VerticalGridView { @@ -33,17 +32,13 @@ public class CustomLiveListView extends VerticalGridView { } private boolean onKeyDown() { - if (getSelectedPosition() != getAdapter().getItemCount() - 1) return false; - if (getId() == R.id.channel || getId() == R.id.epgData) setSelectedPosition(0); - else if (listener != null) listener.nextGroup(false); - return true; + if (getSelectedPosition() == getAdapter().getItemCount() - 1) setSelectedPosition(0); + return false; } private boolean onKeyUp() { - if (getSelectedPosition() != 0) return false; - if (getId() == R.id.channel || getId() == R.id.epgData) setSelectedPosition(getAdapter().getItemCount()); - else if (listener != null) listener.prevGroup(false); - return true; + if (getSelectedPosition() == 0) setSelectedPosition(getAdapter().getItemCount() - 1); + return false; } @Override @@ -58,9 +53,5 @@ public class CustomLiveListView extends VerticalGridView { public interface Callback { void setUITimer(); - - boolean nextGroup(boolean skip); - - boolean prevGroup(boolean skip); } }