[mobile] support scroll seek

pull/123/head
FongMi 3 years ago
parent 9d593665c3
commit e3ef8415f2
  1. 19
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 28
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java

@ -621,9 +621,13 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
}
private void showState(int resId) {
showState(resId, 0);
}
private void showState(int resId, long time) {
mBinding.widget.action.setImageResource(resId);
mBinding.widget.state.setVisibility(View.VISIBLE);
mBinding.widget.position.setText(mPlayers.getPositionTime(0));
mBinding.widget.position.setText(mPlayers.getPositionTime(time));
}
private void hideState() {
@ -872,6 +876,19 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
adapter.notifyItemRangeChanged(0, adapter.getItemCount());
}
@Override
public void onSeeking(int time) {
if (!isLock()) showState(time > 0 ? R.drawable.ic_widget_forward : R.drawable.ic_widget_rewind, time);
}
@Override
public void onSeekTo(int time) {
if (isLock()) return;
mPlayers.seekTo(time);
showProgress();
onPlay();
}
@Override
public void onSingleTap() {
if (isVisible(mBinding.control.getRoot())) hideControl();

@ -12,6 +12,9 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener {
private final GestureDetector detector;
private final Listener listener;
private boolean touch;
private boolean seek;
private int time;
public static CustomKeyDownVod create(Context context) {
return new CustomKeyDownVod(context);
@ -23,9 +26,30 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener {
}
public boolean onTouchEvent(MotionEvent e) {
if (seek && e.getAction() == MotionEvent.ACTION_UP) listener.onSeekTo(time);
return detector.onTouchEvent(e);
}
@Override
public boolean onDown(@NonNull MotionEvent e) {
touch = true;
seek = false;
return true;
}
@Override
public boolean onScroll(@NonNull MotionEvent e1, @NonNull MotionEvent e2, float distanceX, float distanceY) {
int deltaX = (int) (e2.getX() - e1.getX());
if (touch) {
seek = Math.abs(distanceX) >= Math.abs(distanceY);
touch = false;
}
if (seek) {
listener.onSeeking(time = deltaX * 50);
}
return true;
}
@Override
public boolean onDoubleTap(@NonNull MotionEvent e) {
int base = ResUtil.getScreenWidthPx() / 3;
@ -46,6 +70,10 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener {
public interface Listener {
void onSeeking(int time);
void onSeekTo(int time);
void onSingleTap();
void onDoubleTapLeft();

Loading…
Cancel
Save