pull/594/head
jhengazuki 2 months ago
parent 53b290bf93
commit d859c9a0de
  1. 62
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  2. 17
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomLiveListView.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());

@ -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);
}
}

Loading…
Cancel
Save