Support seamless

pull/137/head
FongMi 4 years ago
parent dca2f5ea95
commit ff78ff6656
  1. 38
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 8
      app/src/main/java/com/fongmi/android/tv/bean/History.java
  3. 11
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  4. 3
      app/src/main/res/values-zh-rCN/strings.xml
  5. 3
      app/src/main/res/values-zh-rTW/strings.xml
  6. 3
      app/src/main/res/values/strings.xml

@ -273,10 +273,20 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
mBinding.flag.setSelectedPosition(i);
mEpisodeAdapter.setItems(flag.getEpisodes(), null);
setGroup(flag.getEpisodes().size());
seamless(flag);
}
mFlagAdapter.notifyArrayItemRangeChanged(0, mFlagAdapter.size());
}
private void seamless(Vod.Flag flag) {
Vod.Flag.Episode episode = flag.find(mHistory.getVodRemarks());
if (episode != null) {
if (mPlayers.getCurrentPosition() > 0) mHistory.setPosition(mPlayers.getCurrentPosition());
mHistory.setVodRemarks(episode.getName());
setEpisodeActivated(episode.deactivated());
}
}
private void setEpisodeActivated(Vod.Flag.Episode item) {
if (shouldEnterFullscreen(item)) return;
mCurrent = mBinding.flag.getSelectedPosition();
@ -358,7 +368,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
private void onKeep() {
Keep keep = Keep.find(getHistoryKey());
Notify.show(keep != null ? "已取消收藏" : "已加入收藏");
Notify.show(keep != null ? R.string.detail_keep_del : R.string.detail_keep_add);
if (keep != null) keep.delete();
else createKeep();
checkKeep();
@ -475,14 +485,12 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
}
if (mHistory != null) {
setFlagActivated(mHistory.getFlag());
setEpisodeActivated(mHistory.getEpisode());
if (mHistory.isRevSort()) reverseEpisode();
mControl.opening.setText(mPlayers.getStringForTime(mHistory.getOpening()));
mControl.ending.setText(mPlayers.getStringForTime(mHistory.getEnding()));
} else {
mHistory = createHistory();
setFlagActivated(mHistory.getFlag());
setEpisodeActivated(mHistory.getEpisode());
mControl.opening.setText(mPlayers.getStringForTime(0));
mControl.ending.setText(mPlayers.getStringForTime(0));
}
@ -570,7 +578,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
break;
default:
if (!event.isRetry() || mPlayers.addRetry() > 3) onError(event.getMsg());
else onRetry();
else getPlayer(false);
break;
}
}
@ -580,17 +588,19 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
Clock.get().setCallback(this);
}
private void onRetry() {
mHistory.setPosition(mPlayers.getCurrentPosition());
getPlayer(false);
}
private void onError(String msg) {
mBinding.widget.progress.getRoot().setVisibility(View.GONE);
mBinding.widget.error.setVisibility(View.VISIBLE);
mBinding.widget.text.setText(msg);
Clock.get().setCallback(null);
mPlayers.stop();
int position = mBinding.flag.getSelectedPosition();
if (position == mFlagAdapter.size() - 1) {
mBinding.widget.progress.getRoot().setVisibility(View.GONE);
mBinding.widget.error.setVisibility(View.VISIBLE);
mBinding.widget.text.setText(msg);
Clock.get().setCallback(null);
mPlayers.stop();
} else {
Vod.Flag flag = (Vod.Flag) mFlagAdapter.get(position + 1);
Notify.show(ResUtil.getString(R.string.play_switching, flag.getFlag()));
setFlagActivated(flag);
}
}
private void onPause(boolean visible) {

@ -213,11 +213,11 @@ public class History {
if (getPosition() > 0) break;
for (int i = 0; i < adapter.size(); i++) {
flag = (Vod.Flag) adapter.get(i);
String episode = flag.find(item.getVodRemarks());
if (episode.isEmpty()) continue;
setPosition(item.getPosition());
Vod.Flag.Episode episode = flag.find(item.getVodRemarks());
if (episode == null) continue;
setVodFlag(flag.getFlag());
setVodRemarks(episode);
setPosition(item.getPosition());
setVodRemarks(episode.getName());
break;
}
}

@ -245,11 +245,11 @@ public class Vod {
else for (Episode item : getEpisodes()) item.deactivated();
}
public String find(String remarks) {
public Episode find(String remarks) {
int number = Utils.getDigit(remarks);
for (Vod.Flag.Episode item : getEpisodes()) if (number == item.getNumber()) return item.getName();
if (getEpisodes().size() == 1) return getEpisodes().get(0).getName();
return "";
for (Vod.Flag.Episode item : getEpisodes()) if (number == item.getNumber()) return item;
if (getEpisodes().size() == 1) return getEpisodes().get(0);
return null;
}
@Override
@ -299,8 +299,9 @@ public class Vod {
return activated;
}
private void deactivated() {
public Episode deactivated() {
this.activated = false;
return this;
}
private void setActivated(Episode item) {

@ -24,6 +24,8 @@
<string name="detail_content">简介:<xliff:g name="name">%s</xliff:g></string>
<string name="detail_desc">简介</string>
<string name="detail_keep">收藏</string>
<string name="detail_keep_add">已加入收藏</string>
<string name="detail_keep_del">已取消收藏</string>
<!-- Play -->
<string name="play">播放</string>
@ -39,6 +41,7 @@
<string name="play_backward"></string>
<string name="play_forward_hint">已切换正序播放</string>
<string name="play_backward_hint">已切换倒序播放</string>
<string name="play_switching">正在切换线路至<xliff:g name="name">%s</xliff:g></string>
<!-- Parse -->
<string name="parse">解析</string>

@ -24,6 +24,8 @@
<string name="detail_content">簡介:<xliff:g name="name">%s</xliff:g></string>
<string name="detail_desc">簡介</string>
<string name="detail_keep">收藏</string>
<string name="detail_keep_add">已加入收藏</string>
<string name="detail_keep_del">已取消收藏</string>
<!-- Play -->
<string name="play">播放</string>
@ -39,6 +41,7 @@
<string name="play_backward"></string>
<string name="play_forward_hint">已切換正序播放</string>
<string name="play_backward_hint">已切換倒序播放</string>
<string name="play_switching">正在切換線路至<xliff:g name="name">%s</xliff:g></string>
<!-- Parse -->
<string name="parse">解析</string>

@ -24,6 +24,8 @@
<string name="detail_content">Summary: <xliff:g name="name">%s</xliff:g></string>
<string name="detail_desc">Summary</string>
<string name="detail_keep">Keep</string>
<string name="detail_keep_add">Added</string>
<string name="detail_keep_del">Removed</string>
<!-- Play -->
<string name="play">Play</string>
@ -39,6 +41,7 @@
<string name="play_backward"></string>
<string name="play_forward_hint">Normal play switched</string>
<string name="play_backward_hint">Reverse play switched</string>
<string name="play_switching">Switching to <xliff:g name="name">%s</xliff:g></string>
<!-- Parse -->
<string name="parse">Parse</string>

Loading…
Cancel
Save