diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 6ad54f2fd..d46f511d3 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -289,6 +289,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mR4 = this::showEmpty; setRecyclerView(); setDanmakuView(); + checkDanmaku(); setVideoView(); setViewModel(); checkCast(); @@ -324,6 +325,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mBinding.control.decode.setOnClickListener(view -> onDecode()); mBinding.control.ending.setOnClickListener(view -> onEnding()); mBinding.control.change2.setOnClickListener(view -> onChange()); + mBinding.control.danmaku.setOnClickListener(view -> onDanmaku()); mBinding.control.opening.setOnClickListener(view -> onOpening()); mBinding.control.speed.setOnLongClickListener(view -> onSpeedLong()); mBinding.control.reset.setOnLongClickListener(view -> onResetToggle()); @@ -799,6 +801,12 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List return true; } + private void onDanmaku() { + Setting.putDanmakuShow(!Setting.isDanmakuShow()); + mBinding.control.danmaku.setActivated(Setting.isDanmakuShow()); + toggleDanmaku(); + } + private void onOpening() { long current = mPlayers.getPosition(); long duration = mPlayers.getDuration(); @@ -911,15 +919,13 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mBinding.widget.center.setVisibility(View.GONE); } - private void showDanmaku() { - mBinding.danmaku.setVisibility(View.VISIBLE); - } - - private void hideDanmaku() { - mBinding.danmaku.setVisibility(View.GONE); + private void toggleDanmaku() { + if (Setting.isDanmakuShow()) mBinding.danmaku.show(); + else mBinding.danmaku.hide(); } private void showControl(View view) { + mBinding.control.danmaku.setVisibility(mBinding.danmaku.isPrepared() ? View.VISIBLE : View.GONE); mBinding.control.getRoot().setVisibility(View.VISIBLE); view.requestFocus(); setR1Callback(); @@ -1022,6 +1028,10 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mBinding.keep.setCompoundDrawablesWithIntrinsicBounds(Keep.find(getHistoryKey()) == null ? R.drawable.ic_detail_keep_off : R.drawable.ic_detail_keep_on, 0, 0, 0); } + private void checkDanmaku() { + mBinding.control.danmaku.setActivated(Setting.isDanmakuShow()); + } + private void createKeep() { Keep keep = new Keep(); keep.setKey(getHistoryKey()); diff --git a/app/src/leanback/res/layout/view_control_vod.xml b/app/src/leanback/res/layout/view_control_vod.xml index 853bee8d8..ceb345456 100644 --- a/app/src/leanback/res/layout/view_control_vod.xml +++ b/app/src/leanback/res/layout/view_control_vod.xml @@ -214,6 +214,19 @@ android:textSize="14sp" tools:text="00:00" /> + + { if (isPlaying()) danmakuView.start(getPosition()); else danmakuView.pause(); - danmakuView.show(); + if (Setting.isDanmakuShow()) danmakuView.show(); + else danmakuView.hide(); }); } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 6d8ddceae..9355c55c5 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -36,6 +36,7 @@ 循环 定时 换源 + 弹幕 反转 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index d6ee97b41..57cccc41a 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -36,6 +36,7 @@ 循環 定時 換源 + 彈幕 反轉 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ec667c38d..227447045 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,6 +36,7 @@ Loop Timer Change + Danmaku Invert diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 442c81d5b..e93c6b411 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -296,6 +296,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mR4 = this::showEmpty; mPiP = new PiP(); setRecyclerView(); + checkDanmakuImg(); setDanmakuView(); setVideoView(); setViewModel(); @@ -320,6 +321,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.play.setOnClickListener(view -> checkPlay()); mBinding.control.next.setOnClickListener(view -> checkNext()); mBinding.control.prev.setOnClickListener(view -> checkPrev()); + mBinding.control.danmaku.setOnClickListener(view -> onDanmaku()); mBinding.control.setting.setOnClickListener(view -> onSetting()); mBinding.control.title.setOnLongClickListener(view -> onChange()); mBinding.control.right.back.setOnClickListener(view -> onFull()); @@ -718,6 +720,12 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo else Notify.show(R.string.error_play_prev); } + private void onDanmaku() { + Setting.putDanmakuShow(!Setting.isDanmakuShow()); + checkDanmakuImg(); + toggleDanmaku(); + } + private void onSetting() { mControlDialog = ControlDialog.create().parent(mBinding).history(mHistory).player(mPlayers).parse(isUseParse()).show(this); } @@ -919,6 +927,11 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.widget.text.setText(""); } + private void toggleDanmaku() { + if (Setting.isDanmakuShow()) mBinding.danmaku.show(); + else mBinding.danmaku.hide(); + } + private void showDanmaku() { mBinding.danmaku.setVisibility(View.VISIBLE); } @@ -929,6 +942,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void showControl() { if (mPiP.isInMode(this)) return; + mBinding.control.danmaku.setVisibility(isLock() || !mBinding.danmaku.isPrepared() ? View.GONE : View.VISIBLE); mBinding.control.setting.setVisibility(mHistory == null || isFullscreen() ? View.GONE : View.VISIBLE); mBinding.control.right.rotate.setVisibility(isFullscreen() && !isLock() ? View.VISIBLE : View.GONE); mBinding.control.keep.setVisibility(mHistory == null || isFullscreen() ? View.GONE : View.VISIBLE); @@ -1044,6 +1058,10 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.right.lock.setImageResource(isLock() ? R.drawable.ic_control_lock_on : R.drawable.ic_control_lock_off); } + private void checkDanmakuImg() { + mBinding.control.danmaku.setImageResource(Setting.isDanmakuShow() ? R.drawable.ic_control_danmaku_on : R.drawable.ic_control_danmaku_off); + } + private void createKeep() { Keep keep = new Keep(); keep.setKey(getHistoryKey()); diff --git a/app/src/mobile/res/drawable/ic_control_danmaku_off.xml b/app/src/mobile/res/drawable/ic_control_danmaku_off.xml new file mode 100644 index 000000000..d53a8dc1b --- /dev/null +++ b/app/src/mobile/res/drawable/ic_control_danmaku_off.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/mobile/res/drawable/ic_control_danmaku_on.xml b/app/src/mobile/res/drawable/ic_control_danmaku_on.xml new file mode 100644 index 000000000..05a81f11b --- /dev/null +++ b/app/src/mobile/res/drawable/ic_control_danmaku_on.xml @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/app/src/mobile/res/layout/view_control_vod.xml b/app/src/mobile/res/layout/view_control_vod.xml index b74b0c591..756234bd3 100644 --- a/app/src/mobile/res/layout/view_control_vod.xml +++ b/app/src/mobile/res/layout/view_control_vod.xml @@ -141,6 +141,28 @@ + + + + + +