Danmu line add or sub, fix control next focus

okjack
okjack 2 years ago
parent 925b3a8c9a
commit 5a2ddf315a
  1. 49
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 2
      app/src/leanback/res/layout/view_control_vod.xml
  3. 4
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  4. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java

@ -358,6 +358,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mBinding.control.opening.setDownListener(this::onOpeningSub);
mBinding.control.loop.setOnClickListener(view -> onLoop());
mBinding.control.danmu.setOnClickListener(view -> onDanmu());
mBinding.control.danmu.setUpListener(this::onDanmuAdd);
mBinding.control.danmu.setDownListener(this::onDanmuSub);
mBinding.control.next.setOnClickListener(view -> checkNext());
mBinding.control.prev.setOnClickListener(view -> checkPrev());
mBinding.control.episodes.setOnClickListener(view -> onEpisodes());
@ -452,19 +454,24 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
setSubtitle(16);
}
private void setDanmuView() {
int maxLine = Setting.getDanmuLine(3);
mPlayers.setDanmuView(mBinding.danmaku);
private void setDanmuViewSettings() {
float[] range = {2.4f, 1.8f, 1.2f, 0.8f};
float speed = range[Setting.getDanmuSpeed()];
float alpha = Setting.getDanmuAlpha() / 100.0f;
float sizeScale = Setting.getDanmuSize();
float sizeScale = isFullscreen() ? 1.2f * Setting.getDanmuSize() : 0.8f * Setting.getDanmuSize();
int maxLine = Setting.getDanmuLine(3);
HashMap<Integer, Integer> maxLines = new HashMap<>();
maxLines.put(BaseDanmaku.TYPE_FIX_TOP, maxLine);
maxLines.put(BaseDanmaku.TYPE_SCROLL_RL, maxLine);
maxLines.put(BaseDanmaku.TYPE_SCROLL_LR, maxLine);
maxLines.put(BaseDanmaku.TYPE_FIX_BOTTOM, maxLine);
mDanmakuContext.setDanmakuStyle(IDisplayer.DANMAKU_STYLE_STROKEN, 3).setMaximumLines(maxLines).setScrollSpeedFactor(speed).setDanmakuTransparency(alpha).setDanmakuMargin(12).setScaleTextSize(sizeScale);
mDanmakuContext.setMaximumLines(maxLines).setScrollSpeedFactor(speed).setDanmakuTransparency(alpha).setScaleTextSize(sizeScale);
}
private void setDanmuView() {
mPlayers.setDanmuView(mBinding.danmaku);
setDanmuViewSettings();
mDanmakuContext.setDanmakuStyle(IDisplayer.DANMAKU_STYLE_STROKEN, 3).setDanmakuMargin(8);
mBinding.control.danmu.setActivated(Setting.isDanmu());
}
@ -881,6 +888,22 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
showDanmu();
}
private void onDanmuAdd() {
int line = Setting.getDanmuLine(3);
line = Math.min(line + 1, 15);
Setting.putDanmuLine(line);
mBinding.control.danmu.setText(line + ResUtil.getString(R.string.lines));
setDanmuViewSettings();
}
private void onDanmuSub() {
int line = Setting.getDanmuLine(3);
line = Math.max(line - 1, 1);
Setting.putDanmuLine(line);
mBinding.control.danmu.setText(line + ResUtil.getString(R.string.lines));
setDanmuViewSettings();
}
private void showDanmu() {
if (Setting.isDanmu()) mBinding.danmaku.show();
else mBinding.danmaku.hide();
@ -1104,11 +1127,27 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mBinding.widget.center.setVisibility(View.GONE);
}
private void setControlNextFocus() {
int count = mBinding.control.actionLayout.getChildCount();
for(int i=0; i<count-1; i++) {
View btn = mBinding.control.actionLayout.getChildAt(i);
if (btn == null || !isVisible(btn)) continue;
for(int j=i+1; j<count; j++) {
View next = mBinding.control.actionLayout.getChildAt(j);
if (next == null || !isVisible(next)) continue;
btn.setNextFocusRightId(next.getId());
next.setNextFocusLeftId(btn.getId());
break;
}
}
}
private void showControl(View view) {
mBinding.control.danmu.setVisibility(mBinding.danmaku.isPrepared() ? View.VISIBLE : View.GONE);
mBinding.control.getRoot().setVisibility(View.VISIBLE);
mBinding.control.episodes.setVisibility(Setting.getFullscreenMenuKey() == 0 ? View.VISIBLE : View.GONE);
view.requestFocus();
setControlNextFocus();
setR1Callback();
}

@ -214,7 +214,7 @@
android:textSize="14sp"
tools:text="00:00" />
<TextView
<com.fongmi.android.tv.ui.custom.CustomUpDownView
android:id="@+id/danmu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

@ -325,8 +325,8 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
public String addSpeed() {
float speed = getSpeed();
float addon = speed >= 2 ? 1f : 0.1f;
speed = speed >= 5 ? 0.2f : Math.min(speed + addon, 5.0f);
float addon = speed >= 2 ? 1f : 0.25f;
speed = speed >= 5 ? 0.25f : Math.min(speed + addon, 5.0f);
return setSpeed(speed);
}

@ -420,11 +420,11 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
public void setDanmuViewSettings() {
int maxLine = Setting.getDanmuLine(2);
float[] range = {2.4f, 1.8f, 1.2f, 0.8f};
float speed = range[Setting.getDanmuSpeed()];
float alpha = Setting.getDanmuAlpha() / 100.0f;
float sizeScale = Setting.getDanmuSize();
int maxLine = Setting.getDanmuLine(2);
HashMap<Integer, Integer> maxLines = new HashMap<>();
maxLines.put(BaseDanmaku.TYPE_FIX_TOP, maxLine);
maxLines.put(BaseDanmaku.TYPE_SCROLL_RL, maxLine);

Loading…
Cancel
Save