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 ffbcff9f4..779b28b21 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
@@ -151,6 +151,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
protected void initEvent() {
mBinding.group.setListener(this);
mBinding.channel.setListener(this);
+ mBinding.epgData.setListener(this);
mBinding.control.seek.setListener(mPlayers);
mBinding.control.text.setOnClickListener(this::onTrack);
mBinding.control.audio.setOnClickListener(this::onTrack);
@@ -163,6 +164,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mBinding.control.line.setOnClickListener(view -> onLine());
mBinding.control.scale.setOnClickListener(view -> onScale());
mBinding.control.speed.setOnClickListener(view -> onSpeed());
+ mBinding.control.action.setOnClickListener(view -> onAction());
mBinding.control.invert.setOnClickListener(view -> onInvert());
mBinding.control.across.setOnClickListener(view -> onAcross());
mBinding.control.change.setOnClickListener(view -> onChange());
@@ -181,10 +183,10 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
private void setRecyclerView() {
mBinding.group.setItemAnimator(null);
mBinding.channel.setItemAnimator(null);
- mBinding.widget.epgData.setItemAnimator(null);
+ mBinding.epgData.setItemAnimator(null);
mBinding.group.setAdapter(new ItemBridgeAdapter(mGroupAdapter = new ArrayObjectAdapter(new GroupPresenter(this))));
mBinding.channel.setAdapter(new ItemBridgeAdapter(mChannelAdapter = new ArrayObjectAdapter(new ChannelPresenter(this))));
- mBinding.widget.epgData.setAdapter(new ItemBridgeAdapter(mEpgDataAdapter = new ArrayObjectAdapter(new EpgDataPresenter(this))));
+ mBinding.epgData.setAdapter(new ItemBridgeAdapter(mEpgDataAdapter = new ArrayObjectAdapter(new EpgDataPresenter(this))));
}
private void setVideoView() {
@@ -193,7 +195,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
setScale(Setting.getLiveScale());
ExoUtil.setSubtitleView(mBinding.exo);
mPlayers.setTag(tag = UUID.randomUUID().toString());
- findViewById(R.id.timeBar).setNextFocusUpId(R.id.player);
+ findViewById(R.id.timeBar).setNextFocusUpId(R.id.action);
mBinding.control.invert.setActivated(Setting.isInvert());
mBinding.control.across.setActivated(Setting.isAcross());
mBinding.control.change.setActivated(Setting.isChange());
@@ -263,7 +265,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
int padding = ResUtil.dp2px(48);
if (live.getWidth() == 0) 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() + padding, ResUtil.getScreenWidth() / 4);
- mBinding.divide.setVisibility(live.getWidth() == 0 ? View.GONE : View.VISIBLE);
}
private Group setWidth(Group group) {
@@ -280,7 +281,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
if (epg.getList().isEmpty()) return;
int minWidth = ResUtil.getTextWidth(epg.getList().get(0).getTime(), 16);
if (epg.getWidth() == 0) for (EpgData item : epg.getList()) epg.setWidth(Math.max(epg.getWidth(), ResUtil.getTextWidth(item.getTitle(), 16)));
- mBinding.widget.epgData.getLayoutParams().width = epg.getWidth() == 0 ? 0 : Math.min(Math.max(epg.getWidth(), minWidth) + padding, ResUtil.getScreenWidth() / 2);
+ mBinding.epgData.getLayoutParams().width = epg.getWidth() == 0 ? 0 : Math.min(Math.max(epg.getWidth(), minWidth) + padding, ResUtil.getScreenWidth() / 2);
}
private void setPosition(int[] position) {
@@ -321,7 +322,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
private void setActivated(EpgData item) {
for (int i = 0; i < mEpgDataAdapter.size(); i++) ((EpgData) mEpgDataAdapter.get(i)).setSelected(item);
- notifyItemChanged(mBinding.widget.epgData, mEpgDataAdapter);
+ notifyItemChanged(mBinding.epgData, mEpgDataAdapter);
}
private void checkPlay() {
@@ -367,6 +368,10 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
return true;
}
+ private void onAction() {
+ checkPlay();
+ }
+
private void onInvert() {
Setting.putInvert(!Setting.isInvert());
mBinding.control.invert.setActivated(Setting.isInvert());
@@ -399,11 +404,9 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
setPosition();
}
- @Override
- public void showUI() {
+ private void showUI() {
if (isVisible(mBinding.recycler)) return;
mBinding.recycler.setVisibility(View.VISIBLE);
- mBinding.channel.requestFocus();
setPosition();
setUITimer();
hideEpg();
@@ -412,14 +415,19 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public void showEpg(Channel item) {
if (mChannel == null || mChannel.getData().getList().isEmpty() || mEpgDataAdapter.size() == 0 || !mChannel.equals(item) || !mChannel.getGroup().equals(mGroup)) return;
- mBinding.widget.epgData.setSelectedPosition(mChannel.getData().getSelected());
- mBinding.widget.epg.setVisibility(View.VISIBLE);
- mBinding.widget.epg.requestFocus();
- hideUI();
+ mBinding.epgData.setSelectedPosition(mChannel.getData().getSelected());
+ mBinding.epgData.setVisibility(View.VISIBLE);
+ mBinding.channel.setVisibility(View.GONE);
+ mBinding.group.setVisibility(View.GONE);
+ mBinding.epgData.requestFocus();
}
- private void hideEpg() {
- mBinding.widget.epg.setVisibility(View.GONE);
+ @Override
+ public void hideEpg() {
+ mBinding.channel.setVisibility(View.VISIBLE);
+ mBinding.group.setVisibility(View.VISIBLE);
+ mBinding.epgData.setVisibility(View.GONE);
+ mBinding.channel.requestFocus();
}
private void showProgress() {
@@ -447,16 +455,15 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
private void showControl(View view) {
mBinding.control.getRoot().setVisibility(View.VISIBLE);
- mBinding.widget.top.setVisibility(View.VISIBLE);
+ mBinding.widget.info.setVisibility(View.VISIBLE);
App.post(view::requestFocus, 25);
setR1Callback();
hideInfo();
- hideEpg();
}
private void hideControl() {
mBinding.control.getRoot().setVisibility(View.GONE);
- mBinding.widget.top.setVisibility(View.GONE);
+ mBinding.widget.info.setVisibility(View.GONE);
App.removeCallbacks(mR1);
}
@@ -468,7 +475,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
private void showInfo() {
mBinding.widget.bottom.setVisibility(View.VISIBLE);
setR3Callback();
- hideEpg();
setInfo();
}
@@ -555,6 +561,8 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
if (item.isSelected()) {
fetch(item);
} else if (mChannel.hasCatchup()) {
+ mBinding.widget.epg.setVisibility(item.isInRange() ? View.GONE : View.VISIBLE);
+ mBinding.widget.epg.setText(item.isInRange() ? "" : item.getTitle());
Notify.show(getString(R.string.play_ready, item.getTitle()));
setActivated(item);
fetch(item);
@@ -588,6 +596,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mBinding.widget.play.setText("");
mChannel.loadLogo(mBinding.widget.logo);
mBinding.widget.title.setSelected(true);
+ mBinding.widget.epg.setVisibility(View.GONE);
mBinding.widget.name.setText(mChannel.getName());
mBinding.widget.title.setText(mChannel.getName());
mBinding.widget.line.setText(mChannel.getLineText());
@@ -619,7 +628,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mViewModel.getUrl(mChannel, item);
mPlayers.clear();
mPlayers.stop();
- hideEpg();
+ hideUI();
}
private void fetch() {
@@ -637,13 +646,13 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
private void checkPlayImg() {
ActionEvent.update();
+ mBinding.control.action.setText(mPlayers.isPlaying() ? R.string.pause : R.string.play);
}
private void resetAdapter() {
- mBinding.widget.epgData.getLayoutParams().width = 0;
mBinding.channel.getLayoutParams().width = 0;
+ mBinding.epgData.getLayoutParams().width = 0;
mBinding.group.getLayoutParams().width = 0;
- mBinding.divide.setVisibility(View.GONE);
mEpgDataAdapter.clear();
mChannelAdapter.clear();
mGroupAdapter.clear();
@@ -882,7 +891,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public boolean dispatch(boolean check) {
- return !check || isGone(mBinding.recycler) && isGone(mBinding.control.getRoot()) && isGone(mBinding.widget.epg);
+ return !check || isGone(mBinding.recycler) && isGone(mBinding.control.getRoot());
}
@Override
@@ -937,7 +946,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public void onMenu() {
- showControl(mBinding.control.player);
+ showControl(mBinding.control.action);
}
@Override
@@ -948,7 +957,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public void onDoubleTap() {
if (isVisible(mBinding.recycler)) hideUI();
- else if (isVisible(mBinding.widget.epg)) hideEpg();
else if (isVisible(mBinding.control.getRoot())) hideControl();
else onMenu();
}
@@ -986,8 +994,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
hideControl();
} else if (isVisible(mBinding.widget.bottom)) {
hideInfo();
- } else if (isVisible(mBinding.widget.epg)) {
- hideEpg();
} else if (isVisible(mBinding.recycler)) {
hideUI();
} else {
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 e3c55d368..6eabf7955 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
@@ -34,14 +34,14 @@ public class CustomLiveListView extends VerticalGridView {
private boolean onKeyDown() {
if (getSelectedPosition() != getAdapter().getItemCount() - 1) return false;
- if (getId() == R.id.channel) setSelectedPosition(0);
+ if (getId() == R.id.channel || getId() == R.id.epg) setSelectedPosition(0);
else if (listener != null) listener.nextGroup(false);
return true;
}
private boolean onKeyUp() {
if (getSelectedPosition() != 0) return false;
- if (getId() == R.id.channel) setSelectedPosition(getAdapter().getItemCount());
+ if (getId() == R.id.channel || getId() == R.id.epg) setSelectedPosition(getAdapter().getItemCount());
else if (listener != null) listener.prevGroup(false);
return true;
}
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpgDataPresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpgDataPresenter.java
index 81ae9a8f7..4d77a026a 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpgDataPresenter.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpgDataPresenter.java
@@ -19,7 +19,7 @@ public class EpgDataPresenter extends Presenter {
public interface OnClickListener {
- void showUI();
+ void hideEpg();
void onItemClick(EpgData item);
}
@@ -36,7 +36,7 @@ public class EpgDataPresenter extends Presenter {
holder.binding.time.setText(item.getTime());
holder.binding.title.setText(item.getTitle());
holder.binding.getRoot().setSelected(item.isSelected());
- holder.binding.getRoot().setLeftListener(mListener::showUI);
+ holder.binding.getRoot().setLeftListener(mListener::hideEpg);
setOnClickListener(holder, view -> {
if (!item.isFuture()) mListener.onItemClick(item);
});
diff --git a/app/src/leanback/res/layout/activity_live.xml b/app/src/leanback/res/layout/activity_live.xml
index 130b153a9..e10cfa176 100644
--- a/app/src/leanback/res/layout/activity_live.xml
+++ b/app/src/leanback/res/layout/activity_live.xml
@@ -53,13 +53,6 @@
tools:itemCount="5"
tools:listitem="@layout/adapter_group" />
-
-
+
+
diff --git a/app/src/leanback/res/layout/view_control_live.xml b/app/src/leanback/res/layout/view_control_live.xml
index fd8947d81..e114bcf9c 100644
--- a/app/src/leanback/res/layout/view_control_live.xml
+++ b/app/src/leanback/res/layout/view_control_live.xml
@@ -18,7 +18,7 @@
android:orientation="horizontal">
+
+
@@ -170,7 +182,7 @@
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
- android:nextFocusRight="@id/player"
+ android:nextFocusRight="@id/action"
android:text="@string/play_change"
android:textColor="@color/text"
android:textSize="14sp" />
diff --git a/app/src/leanback/res/layout/view_widget_live.xml b/app/src/leanback/res/layout/view_widget_live.xml
index 910812b22..b29f56d2d 100644
--- a/app/src/leanback/res/layout/view_widget_live.xml
+++ b/app/src/leanback/res/layout/view_widget_live.xml
@@ -5,7 +5,7 @@
android:layout_height="match_parent">
+ tools:text="民視" />
+
+
+
+
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/leanback/res/layout/view_widget_vod.xml b/app/src/leanback/res/layout/view_widget_vod.xml
index 5f333b57e..c3a779e45 100644
--- a/app/src/leanback/res/layout/view_widget_vod.xml
+++ b/app/src/leanback/res/layout/view_widget_vod.xml
@@ -33,7 +33,6 @@
android:layout_height="wrap_content"
android:layout_below="@+id/title"
android:layout_alignStart="@+id/title"
- android:layout_marginBottom="16dp"
android:shadowColor="@color/grey_900"
android:shadowDx="2"
android:shadowDy="2"
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index fd7198d3b..2c2f5566f 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -28,6 +28,7 @@
播放
+ 暂停
片头
片尾
EXO
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index bf84d7a10..e984a3f2c 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -28,6 +28,7 @@
播放
+ 暫停
片頭
片尾
EXO
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1c5c619d4..3d1f2dfab 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -28,6 +28,7 @@
Play
+ Pause
OP
ED
EXO