Optimize touch event

release
FongMi 4 months ago
parent fe297ce428
commit b662e55949
  1. 2
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWallView.java
  2. 31
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 28
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 47
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDown.java

@ -62,7 +62,7 @@ public class CustomWallView extends FrameLayout implements DefaultLifecycleObser
player = new ExoPlayer.Builder(getContext()).build();
player.setRepeatMode(Player.REPEAT_MODE_ALL);
player.setPlayWhenReady(true);
player.setVolume(0);
player.mute();
}
@Subscribe(threadMode = ThreadMode.MAIN)

@ -1002,17 +1002,17 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener
@Override
public void onSpeedUp() {
if (mPlayers.isLive() || !mPlayers.isPlaying()) return;
mBinding.control.action.speed.setText(mPlayers.setSpeed(Setting.getSpeed()));
mBinding.widget.speed.startAnimation(ResUtil.getAnim(R.anim.forward));
if (mPlayers.isLive()) return;
if (!mPlayers.isPlaying()) return;
mBinding.widget.speed.setVisibility(View.VISIBLE);
mBinding.widget.speed.startAnimation(ResUtil.getAnim(R.anim.forward));
mBinding.control.action.speed.setText(mPlayers.setSpeed(Setting.getSpeed()));
}
@Override
public void onSpeedEnd() {
mBinding.control.action.speed.setText(mPlayers.setSpeed(1.0f));
mBinding.widget.speed.setVisibility(View.GONE);
mBinding.widget.speed.clearAnimation();
mBinding.control.action.speed.setText(mPlayers.setSpeed(1.0f));
}
@Override
@ -1024,11 +1024,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener
else mBinding.widget.brightIcon.setImageResource(R.drawable.ic_widget_bright_high);
}
@Override
public void onBrightEnd() {
mBinding.widget.bright.setVisibility(View.GONE);
}
@Override
public void onVolume(int progress) {
mBinding.widget.volume.setVisibility(View.VISIBLE);
@ -1038,11 +1033,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener
else mBinding.widget.volumeIcon.setImageResource(R.drawable.ic_widget_volume_high);
}
@Override
public void onVolumeEnd() {
mBinding.widget.volume.setVisibility(View.GONE);
}
@Override
public void onFlingUp() {
if (Setting.isInvert()) nextChannel();
@ -1067,10 +1057,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener
@Override
public void onSeekEnd(long time) {
if (mPlayers.isLive()) return;
mBinding.widget.seek.setVisibility(View.GONE);
mPlayers.seek(time);
showProgress();
onPlay();
}
@Override
@ -1085,6 +1072,14 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener
else showControl();
}
@Override
public void onTouchEnd() {
mBinding.widget.seek.setVisibility(View.GONE);
mBinding.widget.speed.setVisibility(View.GONE);
mBinding.widget.bright.setVisibility(View.GONE);
mBinding.widget.volume.setVisibility(View.GONE);
}
@Override
public void onShare(CharSequence title) {
mPlayers.share(this, title);

@ -1482,16 +1482,15 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
@Override
public void onSpeedUp() {
if (!mPlayers.isPlaying()) return;
mBinding.control.action.speed.setText(mPlayers.setSpeed(Setting.getSpeed()));
mBinding.widget.speed.startAnimation(ResUtil.getAnim(R.anim.forward));
mBinding.widget.speed.setVisibility(View.VISIBLE);
mBinding.widget.speed.startAnimation(ResUtil.getAnim(R.anim.forward));
mBinding.control.action.speed.setText(mPlayers.setSpeed(Setting.getSpeed()));
}
@Override
public void onSpeedEnd() {
mBinding.control.action.speed.setText(mPlayers.setSpeed(mHistory.getSpeed()));
mBinding.widget.speed.setVisibility(View.GONE);
mBinding.widget.speed.clearAnimation();
mBinding.control.action.speed.setText(mPlayers.setSpeed(mHistory.getSpeed()));
}
@Override
@ -1503,11 +1502,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
else mBinding.widget.brightIcon.setImageResource(R.drawable.ic_widget_bright_high);
}
@Override
public void onBrightEnd() {
mBinding.widget.bright.setVisibility(View.GONE);
}
@Override
public void onVolume(int progress) {
mBinding.widget.volume.setVisibility(View.VISIBLE);
@ -1517,11 +1511,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
else mBinding.widget.volumeIcon.setImageResource(R.drawable.ic_widget_volume_high);
}
@Override
public void onVolumeEnd() {
mBinding.widget.volume.setVisibility(View.GONE);
}
@Override
public void onFlingUp() {
checkNext();
@ -1542,10 +1531,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
@Override
public void onSeekEnd(long time) {
mBinding.widget.seek.setVisibility(View.GONE);
mPlayers.seek(time);
showProgress();
onPlay();
}
@Override
@ -1568,6 +1554,14 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
}
@Override
public void onTouchEnd() {
mBinding.widget.seek.setVisibility(View.GONE);
mBinding.widget.speed.setVisibility(View.GONE);
mBinding.widget.bright.setVisibility(View.GONE);
mBinding.widget.volume.setVisibility(View.GONE);
}
@Override
public void onShare(CharSequence title) {
mPlayers.share(this, title);

@ -32,7 +32,6 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple
private boolean changeScale;
private boolean changeTime;
private boolean animating;
private boolean center;
private boolean touch;
private boolean lock;
private float bright;
@ -55,10 +54,9 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple
}
public boolean onTouchEvent(MotionEvent e) {
if (changeTime && e.getAction() == MotionEvent.ACTION_UP) onSeekEnd();
if (e.getAction() == MotionEvent.ACTION_UP) listener.onTouchEnd();
if (changeSpeed && e.getAction() == MotionEvent.ACTION_UP) listener.onSpeedEnd();
if (changeBright && e.getAction() == MotionEvent.ACTION_UP) listener.onBrightEnd();
if (changeVolume && e.getAction() == MotionEvent.ACTION_UP) listener.onVolumeEnd();
if (changeTime && e.getAction() == MotionEvent.ACTION_UP) listener.onSeekEnd(time);
return e.getPointerCount() == 2 ? scaleDetector.onTouchEvent(e) : detector.onTouchEvent(e);
}
@ -79,34 +77,43 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple
return scale;
}
private boolean isMultiple(MotionEvent e) {
return e.getPointerCount() > 1;
}
private boolean isEdge(MotionEvent e) {
return ResUtil.isEdge(activity, e, ResUtil.dp2px(24));
}
private boolean isSide(MotionEvent e) {
int four = ResUtil.getScreenWidth(activity) / 4;
return !(e.getX() > four) || !(e.getX() < four * 3);
}
@Override
public boolean onDown(@NonNull MotionEvent e) {
if (isEdge(e) || changeScale || lock || e.getPointerCount() > 1) return true;
if (isMultiple(e) || isEdge(e) || changeScale || lock) return true;
volume = manager.getStreamVolume(AudioManager.STREAM_MUSIC);
bright = Util.getBrightness(activity);
changeBright = false;
changeVolume = false;
changeSpeed = false;
changeTime = false;
center = false;
touch = true;
time = 0;
return true;
}
@Override
public void onLongPress(@NonNull MotionEvent e) {
if (isEdge(e) || changeScale || lock || e.getPointerCount() > 1) return;
changeSpeed = true;
if (isMultiple(e) || isEdge(e) || changeScale || lock) return;
listener.onSpeedUp();
changeSpeed = true;
}
@Override
public boolean onScroll(MotionEvent e1, @NonNull MotionEvent e2, float distanceX, float distanceY) {
if (isEdge(e1) || changeScale || lock || e1.getPointerCount() > 1) return true;
if (isMultiple(e1) || isEdge(e1) || changeSpeed || changeScale || lock) return true;
float deltaX = e2.getX() - e1.getX();
float deltaY = e1.getY() - e2.getY();
if (touch) checkFunc(distanceX, distanceY, e2);
@ -118,36 +125,28 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple
@Override
public boolean onDoubleTap(@NonNull MotionEvent e) {
if (isEdge(e) || changeScale || e.getPointerCount() > 1) return true;
if (isMultiple(e) || isEdge(e) || changeScale) return true;
listener.onDoubleTap();
return true;
}
@Override
public boolean onSingleTapConfirmed(@NonNull MotionEvent e) {
if (isEdge(e) || changeScale || e.getPointerCount() > 1) return true;
if (isMultiple(e) || isEdge(e) || changeScale) return true;
listener.onSingleTap();
return true;
}
@Override
public boolean onFling(MotionEvent e1, @NonNull MotionEvent e2, float velocityX, float velocityY) {
if (isEdge(e1) || changeScale || !center || animating || e1.getPointerCount() > 1) return true;
if (isMultiple(e1) || isEdge(e1) || isSide(e1) || changeScale || animating || lock) return true;
checkFunc(e1, e2);
return true;
}
private void onSeekEnd() {
listener.onSeekEnd(time);
changeTime = false;
time = 0;
}
private void checkFunc(float distanceX, float distanceY, MotionEvent e2) {
int four = ResUtil.getScreenWidth(activity) / 4;
if (e2.getX() > four && e2.getX() < four * 3) center = true;
else if (Math.abs(distanceX) < Math.abs(distanceY)) checkSide(e2);
if (Math.abs(distanceX) >= Math.abs(distanceY)) changeTime = true;
else if (isSide(e2)) checkSide(e2);
touch = false;
}
@ -220,12 +219,8 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple
void onBright(int progress);
void onBrightEnd();
void onVolume(int progress);
void onVolumeEnd();
void onFlingUp();
void onFlingDown();
@ -237,5 +232,7 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple
void onSingleTap();
void onDoubleTap();
void onTouchEnd();
}
}
Loading…
Cancel
Save