diff --git a/app/src/main/res/anim/forward.xml b/app/src/main/res/anim/forward.xml new file mode 100644 index 000000000..5ab2f0f45 --- /dev/null +++ b/app/src/main/res/anim/forward.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 2809a9b63..3daf90791 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -95,7 +95,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis private Runnable mR1; private Runnable mR2; private Runnable mR3; - private Runnable mR4; public static void push(Activity activity, String url) { start(activity, "push_agent", url, url); @@ -193,7 +192,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mR1 = this::hideControl; mR2 = this::setTraffic; mR3 = this::setOrient; - mR4 = this::showTime; mSiteKey = getKey(); setRecyclerView(); setVideoView(); @@ -619,23 +617,18 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mBinding.widget.error.setVisibility(View.GONE); } - private void showTime() { - mBinding.widget.position.setText(mPlayers.getPositionTime(0)); - App.post(mR4, 200); + private void showPosition(int resId) { + showPosition(resId, 0); } - private void showState(int resId) { - showState(resId, 0); - } - - private void showState(int resId, long time) { + private void showPosition(int resId, long time) { mBinding.widget.action.setImageResource(resId); - mBinding.widget.state.setVisibility(View.VISIBLE); - mBinding.widget.position.setText(mPlayers.getPositionTime(time)); + mBinding.widget.position.setVisibility(View.VISIBLE); + mBinding.widget.time.setText(mPlayers.getPositionTime(time)); } - private void hideState() { - mBinding.widget.state.setVisibility(View.GONE); + private void hidePosition() { + mBinding.widget.position.setVisibility(View.GONE); } private void showControl() { @@ -914,13 +907,13 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } private void onPause(boolean visible) { - if (visible) showState(R.drawable.ic_control_play); + if (visible) showPosition(R.drawable.ic_control_play); mPlayers.pause(); } private void onPlay() { mPlayers.play(); - hideState(); + hidePosition(); } private boolean isFullscreen() { @@ -993,26 +986,54 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis @Override public void onSpeedUp() { + mBinding.widget.speed.startAnimation(ResUtil.getAnim(R.anim.forward)); + mBinding.widget.speed.setVisibility(View.VISIBLE); mPlayers.setSpeed(3.0f); - showState(R.drawable.ic_widget_forward); - showTime(); } @Override - public void onSpeedReset() { + public void onSpeedEnd() { + mBinding.widget.speed.setVisibility(View.GONE); + mBinding.widget.speed.clearAnimation(); mPlayers.setSpeed(1.0f); - App.removeCallbacks(mR4); - hideState(); } @Override - public void onSeeking(int time) { - showState(time > 0 ? R.drawable.ic_widget_forward : R.drawable.ic_widget_rewind, time); + public void onBright(int progress) { + mBinding.widget.bright.setVisibility(View.VISIBLE); + mBinding.widget.brightProgress.setProgress(progress); + if (progress < 35) mBinding.widget.brightIcon.setImageResource(R.drawable.ic_widget_bright_low); + else if (progress < 70) mBinding.widget.brightIcon.setImageResource(R.drawable.ic_widget_bright_medium); + 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); + mBinding.widget.volumeProgress.setProgress(progress); + if (progress < 35) mBinding.widget.volumeIcon.setImageResource(R.drawable.ic_widget_volume_low); + else if (progress < 70) mBinding.widget.volumeIcon.setImageResource(R.drawable.ic_widget_volume_medium); + else mBinding.widget.volumeIcon.setImageResource(R.drawable.ic_widget_volume_high); + } + + @Override + public void onVolumeEnd() { + mBinding.widget.volume.setVisibility(View.GONE); + } + + @Override + public void onSeek(int time) { + showPosition(time > 0 ? R.drawable.ic_widget_forward : R.drawable.ic_widget_rewind, time); hideProgress(); } @Override - public void onSeekTo(int time) { + public void onSeekEnd(int time) { mPlayers.seekTo(time); showProgress(); onPlay(); @@ -1104,6 +1125,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/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java index ffe130234..282edd428 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDownVod.java @@ -43,8 +43,10 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { } public boolean onTouchEvent(MotionEvent e) { - if (changeTime && e.getAction() == MotionEvent.ACTION_UP) seekTo(); - if (changeSpeed && e.getAction() == MotionEvent.ACTION_UP) listener.onSpeedReset(); + if (changeTime && e.getAction() == MotionEvent.ACTION_UP) onSeekEnd(); + 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(); return detector.onTouchEvent(e); } @@ -85,7 +87,7 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { float deltaX = e2.getX() - e1.getX(); float deltaY = e1.getY() - e2.getY(); if (touch) checkFunc(distanceX, distanceY, e2); - if (changeTime) listener.onSeeking(time = (int) deltaX * 50); + if (changeTime) listener.onSeek(time = (int) deltaX * 50); if (changeBright) setBright(deltaY); if (changeVolume) setVolume(deltaY); return true; @@ -104,7 +106,7 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { } private void subTime() { - listener.onSeeking(time = time - Constant.INTERVAL_SEEK); + listener.onSeek(time = time - Constant.INTERVAL_SEEK); App.post(runnable, getDelay()); } @@ -115,9 +117,9 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { else return 50; } - private void seekTo() { + private void onSeekEnd() { App.removeCallbacks(runnable); - listener.onSeekTo(time); + listener.onSeekEnd(time); changeTime = false; time = 0; } @@ -146,7 +148,7 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { WindowManager.LayoutParams attributes = App.activity().getWindow().getAttributes(); attributes.screenBrightness = brightness; App.activity().getWindow().setAttributes(attributes); - int percent = (int) (brightness * 100); + listener.onBright((int) (brightness * 100)); } private void setVolume(float deltaY) { @@ -157,18 +159,26 @@ public class CustomKeyDownVod extends GestureDetector.SimpleOnGestureListener { if (index > maxVolume) index = maxVolume; if (index < 0) index = 0; manager.setStreamVolume(AudioManager.STREAM_MUSIC, (int) index, 0); - int percent = (int) (index / maxVolume * 100); + listener.onVolume((int) (index / maxVolume * 100)); } public interface Listener { void onSpeedUp(); - void onSpeedReset(); + void onSpeedEnd(); - void onSeeking(int time); + void onBright(int progress); - void onSeekTo(int time); + void onBrightEnd(); + + void onVolume(int progress); + + void onVolumeEnd(); + + void onSeek(int time); + + void onSeekEnd(int time); void onSingleTap(); diff --git a/app/src/mobile/res/drawable/ic_widget_bright_high.xml b/app/src/mobile/res/drawable/ic_widget_bright_high.xml new file mode 100644 index 000000000..347b80f73 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_widget_bright_high.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/mobile/res/drawable/ic_widget_bright_low.xml b/app/src/mobile/res/drawable/ic_widget_bright_low.xml new file mode 100644 index 000000000..18bc6f4da --- /dev/null +++ b/app/src/mobile/res/drawable/ic_widget_bright_low.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/mobile/res/drawable/ic_widget_bright_medium.xml b/app/src/mobile/res/drawable/ic_widget_bright_medium.xml new file mode 100644 index 000000000..75ea108d0 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_widget_bright_medium.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/mobile/res/drawable/ic_widget_volume_high.xml b/app/src/mobile/res/drawable/ic_widget_volume_high.xml new file mode 100644 index 000000000..51e0a4be7 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_widget_volume_high.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/mobile/res/drawable/ic_widget_volume_low.xml b/app/src/mobile/res/drawable/ic_widget_volume_low.xml new file mode 100644 index 000000000..60aa7c4e6 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_widget_volume_low.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/mobile/res/drawable/ic_widget_volume_medium.xml b/app/src/mobile/res/drawable/ic_widget_volume_medium.xml new file mode 100644 index 000000000..6d9b330d3 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_widget_volume_medium.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/mobile/res/layout/view_widget_vod.xml b/app/src/mobile/res/layout/view_widget_vod.xml index e0789afb6..815061a7c 100644 --- a/app/src/mobile/res/layout/view_widget_vod.xml +++ b/app/src/mobile/res/layout/view_widget_vod.xml @@ -1,5 +1,6 @@ @@ -56,10 +57,11 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file