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