Optimize live control

pull/123/head
FongMi 3 years ago
parent cd8f0ed8fb
commit 863595f6fc
  1. 21
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  2. 46
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomKeyDownLive.java

@ -46,7 +46,6 @@ import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Traffic;
import com.fongmi.android.tv.utils.Utils;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ui.StyledPlayerView;
@ -522,10 +521,8 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (Utils.isMenuKey(event)) onLongPress();
if (isVisible(mBinding.control.getRoot())) setR3Callback();
if (mGroup == null || mChannel == null) return super.dispatchKeyEvent(event);
else if (isGone(mBinding.recycler) && isGone(mBinding.control.getRoot()) && mKeyDown.hasEvent(event)) return mKeyDown.onKeyDown(event);
if (mKeyDown.hasEvent(event)) mKeyDown.onKeyDown(event);
return super.dispatchKeyEvent(event);
}
@ -556,9 +553,15 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mBinding.widget.center.setVisibility(View.VISIBLE);
}
@Override
public boolean dispatch(boolean check) {
boolean condition1 = mGroup != null && mChannel != null;
boolean condition2 = isGone(mBinding.recycler) && isGone(mBinding.control.getRoot());
return check ? condition1 && condition2 : condition1;
}
@Override
public void onKeyUp() {
if (mGroup == null || mChannel == null) return;
int position = mGroup.getPosition() - 1;
boolean limit = position < 0;
if (Prefers.isAcross() & limit) prevGroup(true);
@ -568,7 +571,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public void onKeyDown() {
if (mGroup == null || mChannel == null) return;
int position = mGroup.getPosition() + 1;
boolean limit = position > mChannelAdapter.size() - 1;
if (Prefers.isAcross() && limit) nextGroup(true);
@ -578,7 +580,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public void onKeyLeft(int time) {
if (mGroup == null || mChannel == null) return;
if (isVisible(mBinding.widget.center)) App.post(mR2, 500);
if (mChannel.isOnly() && mPlayers.isVod()) mPlayers.seekTo(time);
else if (!mChannel.isOnly()) prevLine();
@ -587,7 +588,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public void onKeyRight(int time) {
if (mGroup == null || mChannel == null) return;
if (isVisible(mBinding.widget.center)) App.post(mR2, 500);
if (mChannel.isOnly() && mPlayers.isVod()) mPlayers.seekTo(time);
else if (!mChannel.isOnly()) nextLine(true);
@ -601,13 +601,12 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
}
@Override
public boolean onLongPress() {
public void onMenu() {
if (isVisible(mBinding.control.home)) showControl(mBinding.control.home);
else if (isVisible(mBinding.control.line)) showControl(mBinding.control.line);
else showControl(mBinding.control.player);
hideInfo();
hideUI();
return true;
}
@Override
@ -618,7 +617,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public void onDoubleTap() {
if (isVisible(mBinding.control.getRoot())) hideControl();
else onLongPress();
else onMenu();
}
@Override

@ -43,22 +43,18 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener {
return detector.onTouchEvent(e);
}
public void onKeyDown(int keyCode) {
if (text.length() >= 4) return;
text.append(getNumber(keyCode));
listener.onShow(text.toString());
App.post(runnable, 1000);
}
public boolean onKeyDown(KeyEvent event) {
public void onKeyDown(KeyEvent event) {
if (!listener.dispatch(true)) return;
if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isLeftKey(event)) {
listener.onSeeking(subTime());
} else if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isRightKey(event)) {
listener.onSeeking(addTime());
} else if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isUpKey(event)) {
if (Prefers.isInvert()) listener.onKeyDown(); else listener.onKeyUp();
if (Prefers.isInvert()) listener.onKeyDown();
else listener.onKeyUp();
} else if (event.getAction() == KeyEvent.ACTION_DOWN && Utils.isDownKey(event)) {
if (Prefers.isInvert()) listener.onKeyUp(); else listener.onKeyDown();
if (Prefers.isInvert()) listener.onKeyUp();
else listener.onKeyDown();
} else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isLeftKey(event)) {
listener.onKeyLeft(holdTime);
} else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isRightKey(event)) {
@ -67,37 +63,43 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener {
onKeyDown(event.getKeyCode());
} else if (event.getAction() == KeyEvent.ACTION_UP && Utils.isEnterKey(event)) {
listener.onKeyCenter();
} else if (event.isLongPress() && Utils.isEnterKey(event)) {
listener.onLongPress();
} else if (Utils.isMenuKey(event) || event.isLongPress() && Utils.isEnterKey(event)) {
listener.onMenu();
}
return true;
}
private void onKeyDown(int keyCode) {
if (text.length() >= 4) return;
text.append(getNumber(keyCode));
listener.onShow(text.toString());
App.post(runnable, 1000);
}
@Override
public boolean onDoubleTap(@NonNull MotionEvent e) {
listener.onDoubleTap();
if (listener.dispatch(false)) listener.onDoubleTap();
return true;
}
@Override
public boolean onSingleTapConfirmed(@NonNull MotionEvent e) {
listener.onSingleTap();
if (listener.dispatch(false)) listener.onSingleTap();
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (e1.getX() - e2.getX() > DISTANCE && Math.abs(velocityX) > VELOCITY) {
listener.onKeyLeft(30 * 1000);
if (listener.dispatch(true)) listener.onKeyLeft(30 * 1000);
return true;
} else if (e2.getX() - e1.getX() > DISTANCE && Math.abs(velocityX) > VELOCITY) {
listener.onKeyRight(30 * 1000);
if (listener.dispatch(true)) listener.onKeyRight(30 * 1000);
return true;
} else if (e1.getY() - e2.getY() > DISTANCE && Math.abs(velocityY) > VELOCITY) {
listener.onKeyUp();
if (listener.dispatch(true)) listener.onKeyUp();
return true;
} else if (e2.getY() - e1.getY() > DISTANCE && Math.abs(velocityY) > VELOCITY) {
listener.onKeyDown();
if (listener.dispatch(true)) listener.onKeyDown();
return true;
} else {
return false;
@ -105,7 +107,7 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener {
}
public boolean hasEvent(KeyEvent event) {
return Utils.isEnterKey(event) || Utils.isUpKey(event) || Utils.isDownKey(event) || Utils.isLeftKey(event) || Utils.isRightKey(event) || Utils.isDigitKey(event) || event.isLongPress();
return Utils.isEnterKey(event) || Utils.isUpKey(event) || Utils.isDownKey(event) || Utils.isLeftKey(event) || Utils.isRightKey(event) || Utils.isDigitKey(event) || Utils.isMenuKey(event) || event.isLongPress();
}
private int getNumber(int keyCode) {
@ -126,6 +128,8 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener {
public interface Listener {
boolean dispatch(boolean check);
void onShow(String number);
void onFind(String number);
@ -142,7 +146,7 @@ public class CustomKeyDownLive extends GestureDetector.SimpleOnGestureListener {
void onKeyCenter();
boolean onLongPress();
void onMenu();
void onSingleTap();

Loading…
Cancel
Save