Merge remote-tracking branch 'origin/dev' into dev

pull/224/head
okjack 2 years ago
commit 97f3df16d7
  1. 77
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java
  3. 2
      build.gradle

@ -97,6 +97,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
@ -147,6 +148,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private Runnable mR1; private Runnable mR1;
private Runnable mR2; private Runnable mR2;
private Runnable mR3; private Runnable mR3;
private Runnable mR4;
private Clock mClock; private Clock mClock;
private View mFocus1; private View mFocus1;
private View mFocus2; private View mFocus2;
@ -303,8 +305,9 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mPlayers = new Players().init(this); mPlayers = new Players().init(this);
mBroken = new ArrayList<>(); mBroken = new ArrayList<>();
mR1 = this::hideControl; mR1 = this::hideControl;
mR2 = this::setTraffic; mR2 = this::updateFocus;
mR3 = this::showEmpty; mR3 = this::setTraffic;
mR4 = this::showEmpty;
setBackground(false); setBackground(false);
setRecyclerView(); setRecyclerView();
setEpisodeView(); setEpisodeView();
@ -395,10 +398,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
} }
private void setEpisodeView() { private void setEpisodeView() {
getEpisodeView().setHorizontalSpacing(ResUtil.dp2px(8)); mBinding.episodeVert.setVerticalSpacing(ResUtil.dp2px(8));
mBinding.episodeHori.setHorizontalSpacing(ResUtil.dp2px(8));
mBinding.episodeVert.setHorizontalSpacing(ResUtil.dp2px(8));
mBinding.episodeHori.setRowHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
getEpisodeView().setAdapter(new ItemBridgeAdapter(mEpisodeAdapter = new ArrayObjectAdapter(mEpisodePresenter = new EpisodePresenter(this::setEpisodeActivated)))); getEpisodeView().setAdapter(new ItemBridgeAdapter(mEpisodeAdapter = new ArrayObjectAdapter(mEpisodePresenter = new EpisodePresenter(this::setEpisodeActivated))));
if (Setting.getEpisode() == 0) mBinding.episodeHori.setRowHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
else mBinding.episodeVert.setVerticalSpacing(ResUtil.dp2px(8));
} }
private void setVideoView() { private void setVideoView() {
@ -512,7 +516,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
showEmpty(); showEmpty();
} else { } else {
mBinding.name.setText(getName()); mBinding.name.setText(getName());
App.post(mR3, 10000); App.post(mR4, 10000);
checkSearch(false); checkSearch(false);
} }
} }
@ -539,7 +543,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mBinding.video.requestFocus(); mBinding.video.requestFocus();
setArtwork(item.getVodPic()); setArtwork(item.getVodPic());
getPart(item.getVodName()); getPart(item.getVodName());
App.removeCallbacks(mR3); App.removeCallbacks(mR4);
checkHistory(item); checkHistory(item);
checkFlag(item); checkFlag(item);
checkKeep(); checkKeep();
@ -600,10 +604,10 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setEpisodeAdapter(List<Episode> items) { private void setEpisodeAdapter(List<Episode> items) {
getEpisodeView().setVisibility(items.isEmpty() ? View.GONE : View.VISIBLE); getEpisodeView().setVisibility(items.isEmpty() ? View.GONE : View.VISIBLE);
if (items.size() > 0 && Setting.getEpisode() == 1) setEpisodeView(items); if (isVisible(mBinding.episodeVert)) setEpisodeView(items);
mEpisodeAdapter.setItems(items, null); mEpisodeAdapter.setItems(items, null);
setArrayAdapter(items.size()); setArrayAdapter(items.size());
updateFocus(); setR2Callback();
} }
private void setEpisodeView(List<Episode> items) { private void setEpisodeView(List<Episode> items) {
@ -658,7 +662,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setQualityVisible(boolean visible) { private void setQualityVisible(boolean visible) {
mBinding.quality.setVisibility(visible ? View.VISIBLE : View.GONE); mBinding.quality.setVisibility(visible ? View.VISIBLE : View.GONE);
updateFocus(); setR2Callback();
} }
private void setQualityActivated(Result result) { private void setQualityActivated(Result result) {
@ -694,25 +698,28 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mArrayAdapter.setItems(items, null); mArrayAdapter.setItems(items, null);
} }
private void updateFocus() { private int findFocusDown(int index) {
if (Setting.getEpisode() == 0) { List<Integer> orders = Arrays.asList(R.id.flag, R.id.quality, R.id.episodeHori, R.id.array, R.id.episodeVert, R.id.part, R.id.quick);
mArrayPresenter.setNextFocusUp(R.id.episodeHori); for (int i = 0; i < orders.size(); i++) if (i > index) if (isVisible(findViewById(orders.get(i)))) return orders.get(i);
mQualityAdapter.setNextFocusDown(R.id.episodeHori); return 0;
mArrayPresenter.setNextFocusDown(isVisible(mBinding.part) ? R.id.part : R.id.quick); }
mEpisodePresenter.setNextFocusDown(isVisible(mBinding.array) ? R.id.array : R.id.part);
mEpisodePresenter.setNextFocusUp(isVisible(mBinding.quality) ? R.id.quality : R.id.flag); private int findFocusUp(int index) {
mPartPresenter.setNextFocusUp(isVisible(mBinding.array) ? R.id.array : R.id.episodeHori); List<Integer> orders = Arrays.asList(R.id.flag, R.id.quality, R.id.episodeHori, R.id.array, R.id.episodeVert, R.id.part, R.id.quick);
mFlagPresenter.setNextFocusDown(isVisible(mBinding.quality) ? R.id.quality : R.id.episodeHori); for (int i = orders.size() - 1; i >= 0; i--) if (i < index) if (isVisible(findViewById(orders.get(i)))) return orders.get(i);
} else { return 0;
mArrayPresenter.setNextFocusDown(R.id.episodeVert);
mEpisodePresenter.setNextFocusDown(isVisible(mBinding.part) ? R.id.part : R.id.quick);
mArrayPresenter.setNextFocusUp(isVisible(mBinding.quality) ? R.id.quality : R.id.flag);
mQualityAdapter.setNextFocusDown(isVisible(mBinding.array) ? R.id.array : R.id.episodeVert);
mEpisodePresenter.setNextFocusUp(isVisible(mBinding.array) ? R.id.array : isVisible(mBinding.quality) ? R.id.quality : R.id.flag);
mFlagPresenter.setNextFocusDown(isVisible(mBinding.quality) ? R.id.quality : isVisible(mBinding.array) ? R.id.array : R.id.episodeVert);
mPartPresenter.setNextFocusUp(isVisible(mBinding.episodeVert) ? R.id.episodeVert : isVisible(mBinding.quality) ? R.id.quality : R.id.flag);
} }
private void updateFocus() {
mEpisodePresenter.setNextFocusDown(findFocusDown(Setting.getEpisode() == 0 ? 2 : 4));
mEpisodePresenter.setNextFocusUp(findFocusUp(Setting.getEpisode() == 0 ? 2 : 4));
mQualityAdapter.setNextFocusDown(findFocusDown(1));
mArrayPresenter.setNextFocusDown(findFocusDown(3));
mFlagPresenter.setNextFocusDown(findFocusDown(0));
mArrayPresenter.setNextFocusUp(findFocusUp(3));
mPartPresenter.setNextFocusUp(findFocusUp(5));
notifyItemChanged(getEpisodeView(), mEpisodeAdapter); notifyItemChanged(getEpisodeView(), mEpisodeAdapter);
notifyItemChanged(mBinding.quality, mQualityAdapter);
notifyItemChanged(mBinding.array, mArrayAdapter); notifyItemChanged(mBinding.array, mArrayAdapter);
notifyItemChanged(mBinding.part, mPartAdapter); notifyItemChanged(mBinding.part, mPartAdapter);
notifyItemChanged(mBinding.flag, mFlagAdapter); notifyItemChanged(mBinding.flag, mFlagAdapter);
@ -979,13 +986,13 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void showProgress() { private void showProgress() {
mBinding.widget.progress.setVisibility(View.VISIBLE); mBinding.widget.progress.setVisibility(View.VISIBLE);
App.post(mR2, 0); App.post(mR3, 0);
hideError(); hideError();
} }
private void hideProgress() { private void hideProgress() {
mBinding.widget.progress.setVisibility(View.GONE); mBinding.widget.progress.setVisibility(View.GONE);
App.removeCallbacks(mR2); App.removeCallbacks(mR3);
Traffic.reset(); Traffic.reset();
} }
@ -1041,13 +1048,17 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setTraffic() { private void setTraffic() {
Traffic.setSpeed(mBinding.widget.traffic); Traffic.setSpeed(mBinding.widget.traffic);
App.post(mR2, Constant.INTERVAL_TRAFFIC); App.post(mR3, Constant.INTERVAL_TRAFFIC);
} }
private void setR1Callback() { private void setR1Callback() {
App.post(mR1, Constant.INTERVAL_HIDE); App.post(mR1, Constant.INTERVAL_HIDE);
} }
private void setR2Callback() {
App.post(mR2, 500);
}
private void setArtwork(String url) { private void setArtwork(String url) {
ImgUtil.load(url, R.drawable.radio, new CustomTarget<>() { ImgUtil.load(url, R.drawable.radio, new CustomTarget<>() {
@Override @Override
@ -1093,7 +1104,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setPartAdapter(List<String> items) { private void setPartAdapter(List<String> items) {
mBinding.part.setVisibility(View.VISIBLE); mBinding.part.setVisibility(View.VISIBLE);
mPartAdapter.setItems(items, null); mPartAdapter.setItems(items, null);
updateFocus(); setR2Callback();
} }
private void checkFlag(Vod item) { private void checkFlag(Vod item) {
@ -1370,7 +1381,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mBinding.quick.setVisibility(View.VISIBLE); mBinding.quick.setVisibility(View.VISIBLE);
if (isInitAuto()) nextSite(); if (isInitAuto()) nextSite();
if (items.isEmpty()) return; if (items.isEmpty()) return;
App.removeCallbacks(mR3); App.removeCallbacks(mR4);
} }
private void setSearch(Vod item) { private void setSearch(Vod item) {
@ -1650,6 +1661,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mPlayers.release(); mPlayers.release();
Source.get().stop(); Source.get().stop();
RefreshEvent.history(); RefreshEvent.history();
App.removeCallbacks(mR1, mR2, mR3); App.removeCallbacks(mR1, mR2, mR3, mR4);
} }
} }

@ -79,6 +79,10 @@ public abstract class BaseActivity extends AppCompatActivity {
if (!view.isComputingLayout()) adapter.notifyArrayItemRangeChanged(0, adapter.size()); if (!view.isComputingLayout()) adapter.notifyArrayItemRangeChanged(0, adapter.size());
} }
protected void notifyItemChanged(RecyclerView view, RecyclerView.Adapter<?> adapter) {
if (!view.isComputingLayout()) adapter.notifyItemRangeChanged(0, adapter.getItemCount());
}
private void setBackCallback() { private void setBackCallback() {
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(handleBack()) { getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(handleBack()) {
@Override @Override

@ -12,6 +12,6 @@ tasks.register('clean', Delete) {
project.ext { project.ext {
gsonVersion = '2.10.1' gsonVersion = '2.10.1'
jsoupVersion = '1.15.3' jsoupVersion = '1.15.3'
okhttpVersion = '4.11.0' okhttpVersion = '4.12.0'
annotationVersion = '1.3.0' annotationVersion = '1.3.0'
} }

Loading…
Cancel
Save