Merge branch 'FongMi:dev' into dev

pull/224/head
okcaptain 2 years ago committed by GitHub
commit f51f42951f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  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.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
@ -147,6 +148,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private Runnable mR1;
private Runnable mR2;
private Runnable mR3;
private Runnable mR4;
private Clock mClock;
private View mFocus1;
private View mFocus2;
@ -303,8 +305,9 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mPlayers = new Players().init(this);
mBroken = new ArrayList<>();
mR1 = this::hideControl;
mR2 = this::setTraffic;
mR3 = this::showEmpty;
mR2 = this::updateFocus;
mR3 = this::setTraffic;
mR4 = this::showEmpty;
setBackground(false);
setRecyclerView();
setEpisodeView();
@ -395,10 +398,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
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))));
if (Setting.getEpisode() == 0) mBinding.episodeHori.setRowHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
else mBinding.episodeVert.setVerticalSpacing(ResUtil.dp2px(8));
}
private void setVideoView() {
@ -512,7 +516,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
showEmpty();
} else {
mBinding.name.setText(getName());
App.post(mR3, 10000);
App.post(mR4, 10000);
checkSearch(false);
}
}
@ -539,7 +543,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mBinding.video.requestFocus();
setArtwork(item.getVodPic());
getPart(item.getVodName());
App.removeCallbacks(mR3);
App.removeCallbacks(mR4);
checkHistory(item);
checkFlag(item);
checkKeep();
@ -600,10 +604,10 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setEpisodeAdapter(List<Episode> items) {
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);
setArrayAdapter(items.size());
updateFocus();
setR2Callback();
}
private void setEpisodeView(List<Episode> items) {
@ -658,7 +662,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setQualityVisible(boolean visible) {
mBinding.quality.setVisibility(visible ? View.VISIBLE : View.GONE);
updateFocus();
setR2Callback();
}
private void setQualityActivated(Result result) {
@ -694,25 +698,28 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mArrayAdapter.setItems(items, null);
}
private int findFocusDown(int index) {
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);
for (int i = 0; i < orders.size(); i++) if (i > index) if (isVisible(findViewById(orders.get(i)))) return orders.get(i);
return 0;
}
private int findFocusUp(int index) {
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);
for (int i = orders.size() - 1; i >= 0; i--) if (i < index) if (isVisible(findViewById(orders.get(i)))) return orders.get(i);
return 0;
}
private void updateFocus() {
if (Setting.getEpisode() == 0) {
mArrayPresenter.setNextFocusUp(R.id.episodeHori);
mQualityAdapter.setNextFocusDown(R.id.episodeHori);
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);
mPartPresenter.setNextFocusUp(isVisible(mBinding.array) ? R.id.array : R.id.episodeHori);
mFlagPresenter.setNextFocusDown(isVisible(mBinding.quality) ? R.id.quality : R.id.episodeHori);
} else {
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);
}
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(mBinding.quality, mQualityAdapter);
notifyItemChanged(mBinding.array, mArrayAdapter);
notifyItemChanged(mBinding.part, mPartAdapter);
notifyItemChanged(mBinding.flag, mFlagAdapter);
@ -979,13 +986,13 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void showProgress() {
mBinding.widget.progress.setVisibility(View.VISIBLE);
App.post(mR2, 0);
App.post(mR3, 0);
hideError();
}
private void hideProgress() {
mBinding.widget.progress.setVisibility(View.GONE);
App.removeCallbacks(mR2);
App.removeCallbacks(mR3);
Traffic.reset();
}
@ -1041,13 +1048,17 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setTraffic() {
Traffic.setSpeed(mBinding.widget.traffic);
App.post(mR2, Constant.INTERVAL_TRAFFIC);
App.post(mR3, Constant.INTERVAL_TRAFFIC);
}
private void setR1Callback() {
App.post(mR1, Constant.INTERVAL_HIDE);
}
private void setR2Callback() {
App.post(mR2, 500);
}
private void setArtwork(String url) {
ImgUtil.load(url, R.drawable.radio, new CustomTarget<>() {
@Override
@ -1093,7 +1104,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setPartAdapter(List<String> items) {
mBinding.part.setVisibility(View.VISIBLE);
mPartAdapter.setItems(items, null);
updateFocus();
setR2Callback();
}
private void checkFlag(Vod item) {
@ -1370,7 +1381,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mBinding.quick.setVisibility(View.VISIBLE);
if (isInitAuto()) nextSite();
if (items.isEmpty()) return;
App.removeCallbacks(mR3);
App.removeCallbacks(mR4);
}
private void setSearch(Vod item) {
@ -1651,6 +1662,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mPlayers.release();
Source.get().stop();
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());
}
protected void notifyItemChanged(RecyclerView view, RecyclerView.Adapter<?> adapter) {
if (!view.isComputingLayout()) adapter.notifyItemRangeChanged(0, adapter.getItemCount());
}
private void setBackCallback() {
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(handleBack()) {
@Override

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

Loading…
Cancel
Save