From d4bccdc3c2f49e99f7be5ea4280c53321889a364 Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 17 Jan 2023 13:55:38 +0800 Subject: [PATCH] Optimize UX --- .../tv/ui/activity/DetailActivity.java | 42 +++++++------- .../android/tv/ui/activity/LiveActivity.java | 56 ++++++++++--------- .../tv/ui/custom/CustomKeyDownVod.java | 3 +- .../leanback/res/layout/view_widget_vod.xml | 2 +- 4 files changed, 53 insertions(+), 50 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 7f88ad45c..d4bfbc268 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -101,7 +101,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private Runnable mR1; private Runnable mR2; private Runnable mR3; - private Runnable mR4; public static void start(Activity activity, String id, String name) { start(activity, ApiConfig.get().getHome().getKey(), id, name); @@ -185,9 +184,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mBinding.progressLayout.showProgress(); mPlayers = new Players().init(); mR1 = this::hideControl; - mR2 = this::hideCenter; - mR3 = this::setTraffic; - mR4 = this::onError; + mR2 = this::setTraffic; + mR3 = this::onError; setRecyclerView(); setVideoView(); setViewModel(); @@ -309,6 +307,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mBinding.scroll.scrollTo(0, 0); Clock.get().setCallback(null); Notify.progress(this); + mPlayers.stop(); hideProgress(); getDetail(); } @@ -320,7 +319,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mViewModel.playerContent(getKey(), getVodFlag().getFlag(), item.getUrl()); Clock.get().setCallback(null); updateHistory(item, replay); - setR4Callback(); + setR3Callback(); showProgress(); hideError(); } @@ -452,7 +451,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mBinding.video.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); mBinding.flag.setSelectedPosition(mCurrent); App.post(() -> setFullscreen(true), 250); - onPlay(0); + onPlay(); } private void exitFullscreen() { @@ -594,12 +593,12 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private void showProgress() { mBinding.widget.progress.setVisibility(View.VISIBLE); - App.post(mR3, 0); + App.post(mR2, 0); } private void hideProgress() { mBinding.widget.progress.setVisibility(View.GONE); - App.removeCallbacks(mR3); + App.removeCallbacks(mR2); Traffic.reset(); } @@ -641,7 +640,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private void setTraffic() { Traffic.setSpeed(mBinding.widget.traffic); - App.post(mR3, Constant.INTERVAL_TRAFFIC); + App.post(mR2, Constant.INTERVAL_TRAFFIC); } private void setR1Callback() { @@ -649,9 +648,9 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis App.post(mR1, Constant.INTERVAL_HIDE); } - private void setR4Callback() { - App.removeCallbacks(mR4); - App.post(mR4, Constant.TIMEOUT_VOD); + private void setR3Callback() { + App.removeCallbacks(mR3); + App.post(mR3, Constant.TIMEOUT_VOD); } private void getPart(String source) { @@ -763,7 +762,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mPlayers.reset(); setDefaultTrack(); setTrackVisible(true); - App.removeCallbacks(mR4); + App.removeCallbacks(mR3); mBinding.widget.size.setText(mPlayers.getSizeText()); break; case Player.STATE_ENDED: @@ -802,7 +801,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis showError(msg); hideProgress(); mPlayers.reset(); - App.removeCallbacks(mR4); + App.removeCallbacks(mR3); Clock.get().setCallback(null); checkNext(mBinding.flag.getSelectedPosition()); } @@ -885,9 +884,9 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mPlayers.pause(); } - private void onPlay(int delay) { - App.post(mR2, delay); + private void onPlay() { mPlayers.play(); + hideCenter(); } private boolean isFullscreen() { @@ -941,9 +940,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis @Override public void onSeekTo(int time) { - App.post(() -> mPlayers.seekTo(time), 250); mKeyDown.resetTime(); - onPlay(250); + mPlayers.seekTo(time); + showProgress(); + onPlay(); } @Override @@ -961,7 +961,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis @Override public void onKeyCenter() { if (mPlayers.isPlaying()) onPause(true); - else onPlay(0); + else onPlay(); hideControl(); } @@ -987,7 +987,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis protected void onResume() { super.onResume(); Clock.start(mBinding.widget.time); - onPlay(0); + onPlay(); } @Override @@ -1014,6 +1014,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis protected void onDestroy() { super.onDestroy(); mPlayers.release(); - App.removeCallbacks(mR1, mR2, mR3, mR4); + App.removeCallbacks(mR1, mR2, mR3); } } 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 7a566b24b..f9045d7d1 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 @@ -86,7 +86,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private Runnable mR3; private Runnable mR4; private Runnable mR5; - private Runnable mR6; private int count; public static void start(Activity activity) { @@ -130,11 +129,10 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick protected void initView() { mR0 = this::hideUI; mR1 = this::hideInfo; - mR2 = this::hideCenter; - mR3 = this::hideControl; - mR4 = this::setChannelActivated; - mR5 = this::setTraffic; - mR6 = this::onError; + mR2 = this::hideControl; + mR3 = this::setChannelActivated; + mR4 = this::setTraffic; + mR5 = this::onError; mPlayers = new Players().init(); mKeyDown = CustomKeyDownLive.create(this); mFormatDate = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); @@ -269,7 +267,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void setTraffic() { Traffic.setSpeed(mBinding.widget.traffic); - App.post(mR5, Constant.INTERVAL_TRAFFIC); + App.post(mR4, Constant.INTERVAL_TRAFFIC); } private void onToggle() { @@ -347,24 +345,24 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void showProgress() { mBinding.widget.progress.setVisibility(View.VISIBLE); - App.post(mR5, 0); + App.post(mR4, 0); } private void hideProgress() { mBinding.widget.progress.setVisibility(View.GONE); - App.removeCallbacks(mR5); + App.removeCallbacks(mR4); Traffic.reset(); } private void showControl(View view) { mBinding.control.getRoot().setVisibility(View.VISIBLE); view.requestFocus(); - setR3Callback(); + setR2Callback(); } private void hideControl() { mBinding.control.getRoot().setVisibility(View.GONE); - App.removeCallbacks(mR3); + App.removeCallbacks(mR2); } private void showInfo() { @@ -393,14 +391,14 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick App.post(mR1, Constant.INTERVAL_HIDE); } - private void setR3Callback() { - App.removeCallbacks(mR3); - App.post(mR3, Constant.INTERVAL_HIDE); + private void setR2Callback() { + App.removeCallbacks(mR2); + App.post(mR2, Constant.INTERVAL_HIDE); } - private void setR6Callback() { - App.removeCallbacks(mR6); - App.post(mR6, Constant.TIMEOUT_LIVE); + private void setR5Callback() { + App.removeCallbacks(mR5); + App.post(mR5, Constant.TIMEOUT_LIVE); } private void resetPass() { @@ -451,7 +449,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void setChannel(Channel item) { LiveConfig.get().setKeep(mGroup, mChannel = item); - App.post(mR4, 100); + App.post(mR3, 100); showInfo(); } @@ -488,7 +486,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void getUrl() { mViewModel.getUrl(mChannel); - setR6Callback(); + setR5Callback(); showProgress(); } @@ -531,7 +529,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public boolean dispatchKeyEvent(KeyEvent event) { - if (isVisible(mBinding.control.getRoot())) setR3Callback(); + if (isVisible(mBinding.control.getRoot())) setR2Callback(); if (mKeyDown.hasEvent(event)) mKeyDown.onKeyDown(event); return super.dispatchKeyEvent(event); } @@ -591,20 +589,24 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick @Override public void onKeyLeft(int time) { - if (isVisible(mBinding.widget.center)) App.post(mR2, 250); - if (mChannel.isOnly() && mPlayers.isVod()) App.post(() -> mPlayers.seekTo(time), 250); + if (mChannel.isOnly() && mPlayers.isVod()) App.post(() -> seekTo(time), 250); else if (!mChannel.isOnly()) prevLine(); mKeyDown.resetTime(); } @Override public void onKeyRight(int time) { - if (isVisible(mBinding.widget.center)) App.post(mR2, 250); - if (mChannel.isOnly() && mPlayers.isVod()) App.post(() -> mPlayers.seekTo(time), 250); + if (mChannel.isOnly() && mPlayers.isVod()) App.post(() -> seekTo(time), 250); else if (!mChannel.isOnly()) nextLine(true); mKeyDown.resetTime(); } + private void seekTo(int time) { + mPlayers.seekTo(time); + showProgress(); + hideCenter(); + } + @Override public void onKeyCenter() { hideInfo(); @@ -671,7 +673,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick hideProgress(); mPlayers.reset(); setTrackVisible(true); - App.removeCallbacks(mR6); + App.removeCallbacks(mR5); break; case Player.STATE_ENDED: onKeyDown(); @@ -689,7 +691,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick } private void onError() { - App.removeCallbacks(mR6); + App.removeCallbacks(mR5); mPlayers.reset(); checkNext(); } @@ -737,6 +739,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick Force.get().stop(); ZLive.get().stop(); TVBus.get().quit(); - App.removeCallbacks(mR1, mR2, mR3, mR4, mR5, mR6); + App.removeCallbacks(mR1, mR2, mR3, mR4, mR5); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java index 4fd1cdd3a..1e91e98d2 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java @@ -7,6 +7,7 @@ import android.view.MotionEvent; import androidx.annotation.NonNull; +import com.fongmi.android.tv.App; import com.fongmi.android.tv.Constant; import com.fongmi.android.tv.utils.Utils; @@ -44,7 +45,7 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { } else if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isRightKey(event)) { listener.onSeeking(addTime()); } else if (event.getAction() == KeyEvent.ACTION_UP && (Utils.isLeftKey(event) || Utils.isRightKey(event))) { - listener.onSeekTo(holdTime); + App.post(() -> listener.onSeekTo(holdTime), 250); } else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isUpKey(event)) { listener.onKeyUp(); } else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isDownKey(event)) { diff --git a/app/src/leanback/res/layout/view_widget_vod.xml b/app/src/leanback/res/layout/view_widget_vod.xml index d34068b88..dd6c12837 100644 --- a/app/src/leanback/res/layout/view_widget_vod.xml +++ b/app/src/leanback/res/layout/view_widget_vod.xml @@ -39,7 +39,7 @@ android:shadowDy="2" android:shadowRadius="1" android:textColor="@color/white" - android:textSize="18sp" + android:textSize="16sp" tools:text="1920 x 1080" />