From 18ed56955efedf3ddf0c3c1450aec1bf006097a0 Mon Sep 17 00:00:00 2001 From: okjack Date: Tue, 23 Jan 2024 19:35:53 +0800 Subject: [PATCH] mobile danmu setting dialog --- .../android/tv/player/danmu/Parser.java | 5 +- .../android/tv/ui/activity/MainActivity.java | 6 +- .../android/tv/ui/activity/VideoActivity.java | 23 +- .../tv/ui/dialog/DanmuAlphaDialog.java | 54 ----- .../android/tv/ui/dialog/DanmuDialog.java | 83 +++++++ .../android/tv/ui/dialog/DanmuLineDialog.java | 54 ----- .../android/tv/ui/dialog/DanmuSizeDialog.java | 54 ----- .../tv/ui/fragment/SettingDanmuFragment.java | 104 --------- .../tv/ui/fragment/SettingFragment.java | 7 +- .../tv/ui/fragment/SettingPlayerFragment.java | 7 + .../res/drawable/ic_control_danmu_setting.xml | 13 ++ app/src/mobile/res/layout/dialog_danmu.xml | 179 +++++++++++++++ .../mobile/res/layout/dialog_danmu_alpha.xml | 20 -- .../mobile/res/layout/dialog_danmu_line.xml | 20 -- .../mobile/res/layout/dialog_danmu_size.xml | 20 -- .../mobile/res/layout/fragment_setting.xml | 17 -- .../res/layout/fragment_setting_danmu.xml | 210 ------------------ .../res/layout/fragment_setting_player.xml | 27 +++ .../mobile/res/layout/view_control_vod.xml | 39 +++- 19 files changed, 359 insertions(+), 583 deletions(-) delete mode 100644 app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuAlphaDialog.java create mode 100644 app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuDialog.java delete mode 100644 app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuLineDialog.java delete mode 100644 app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuSizeDialog.java delete mode 100644 app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingDanmuFragment.java create mode 100644 app/src/mobile/res/drawable/ic_control_danmu_setting.xml create mode 100644 app/src/mobile/res/layout/dialog_danmu.xml delete mode 100644 app/src/mobile/res/layout/dialog_danmu_alpha.xml delete mode 100644 app/src/mobile/res/layout/dialog_danmu_line.xml delete mode 100644 app/src/mobile/res/layout/dialog_danmu_size.xml delete mode 100644 app/src/mobile/res/layout/fragment_setting_danmu.xml diff --git a/app/src/main/java/com/fongmi/android/tv/player/danmu/Parser.java b/app/src/main/java/com/fongmi/android/tv/player/danmu/Parser.java index aed29abc0..cf6d8b5d5 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/danmu/Parser.java +++ b/app/src/main/java/com/fongmi/android/tv/player/danmu/Parser.java @@ -3,7 +3,6 @@ package com.fongmi.android.tv.player.danmu; import android.graphics.Color; import android.text.TextUtils; -import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.bean.Danmu; import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Path; @@ -25,7 +24,6 @@ import master.flame.danmaku.danmaku.util.DanmakuUtils; public class Parser extends BaseDanmakuParser { private final Danmu danmu; - private final float dSize; private BaseDanmaku item; private float scaleX; private float scaleY; @@ -33,7 +31,6 @@ public class Parser extends BaseDanmakuParser { public Parser(String path) { this.danmu = Danmu.fromXml(getContent(path)); - this.dSize = Setting.getDanmuSize(); } private String getContent(String path) { @@ -73,7 +70,7 @@ public class Parser extends BaseDanmakuParser { item = mContext.mDanmakuFactory.createDanmaku(type, mContext); item.setTime(time); item.setTimer(mTimer); - item.textSize = size * dSize; + item.textSize = size; item.textColor = color; item.textShadowColor = color <= Color.BLACK ? Color.WHITE : Color.BLACK; item.flags = mContext.mGlobalFlagValues; diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java index 8ed0ae0d8..98d9d4573 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java @@ -34,7 +34,6 @@ import com.fongmi.android.tv.server.Server; import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.custom.FragmentStateManager; import com.fongmi.android.tv.ui.fragment.SettingCustomFragment; -import com.fongmi.android.tv.ui.fragment.SettingDanmuFragment; import com.fongmi.android.tv.ui.fragment.SettingFragment; import com.fongmi.android.tv.ui.fragment.SettingPlayerFragment; import com.fongmi.android.tv.ui.fragment.VodFragment; @@ -97,8 +96,7 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt if (position == 0) return VodFragment.newInstance(); if (position == 1) return SettingFragment.newInstance(); if (position == 2) return SettingPlayerFragment.newInstance(); - if (position == 3) return SettingDanmuFragment.newInstance(); - if (position == 4) return SettingCustomFragment.newInstance(); + if (position == 3) return SettingCustomFragment.newInstance(); return null; } }; @@ -212,8 +210,6 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt protected void onBackPress() { if (!mBinding.navigation.getMenu().findItem(R.id.vod).isVisible()) { setNavigation(); - } else if (mManager.isVisible(4)) { - change(1); } else if (mManager.isVisible(3)) { change(1); } else if (mManager.isVisible(2)) { 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 3e8440241..83dfc378c 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 @@ -82,6 +82,7 @@ import com.fongmi.android.tv.ui.custom.CustomMovement; import com.fongmi.android.tv.ui.custom.SpaceItemDecoration; import com.fongmi.android.tv.ui.dialog.CastDialog; import com.fongmi.android.tv.ui.dialog.ControlDialog; +import com.fongmi.android.tv.ui.dialog.DanmuDialog; import com.fongmi.android.tv.ui.dialog.EpisodeGridDialog; import com.fongmi.android.tv.ui.dialog.EpisodeListDialog; import com.fongmi.android.tv.ui.dialog.InfoDialog; @@ -340,6 +341,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.full.setOnClickListener(view -> onFull()); mBinding.control.keep.setOnClickListener(view -> onKeep()); mBinding.control.danmu.setOnClickListener(view -> onDanmu()); + mBinding.control.danmuSetting.setOnClickListener(view -> onDanmuSetting()); mBinding.control.play.setOnClickListener(view -> checkPlay()); mBinding.control.next.setOnClickListener(view -> checkNext()); mBinding.control.prev.setOnClickListener(view -> checkPrev()); @@ -413,18 +415,24 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo setSubtitle(14); } - private void setDanmuView() { + public void setDanmuViewSettings() { int maxLine = Setting.getDanmuLine(2); - mPlayers.setDanmuView(mBinding.danmaku); 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(); HashMap 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(8).setScaleTextSize(0.8f); + 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); checkDanmuImg(); } @@ -744,6 +752,10 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo showDanmu(); } + private void onDanmuSetting() { + DanmuDialog.create().show(this); + } + private void showDanmu() { if (Setting.isDanmu()) mBinding.danmaku.show(); else mBinding.danmaku.hide(); @@ -952,7 +964,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo App.post(() -> mBinding.video.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)), 50); setRequestedOrientation(mPlayers.isPortrait() ? ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); mBinding.control.full.setVisibility(View.GONE); - mDanmakuContext.setScaleTextSize(1.0f); + mDanmakuContext.setScaleTextSize(1.0f * Setting.getDanmuSize()); setRotate(mPlayers.isPortrait(), true); setSubtitle(Setting.getSubtitle()); Util.hideSystemUI(this); @@ -966,7 +978,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.episode.scrollToPosition(mEpisodeAdapter.getPosition()); mBinding.control.full.setVisibility(View.VISIBLE); mBinding.video.setLayoutParams(mFrameParams); - mDanmakuContext.setScaleTextSize(0.8f); + mDanmakuContext.setScaleTextSize(0.8f * Setting.getDanmuSize()); setRotate(false, false); App.post(mR3, 2000); setSubtitle(14); @@ -1011,6 +1023,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void showControl() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInPictureInPictureMode()) return; mBinding.control.danmu.setVisibility(isLock() || !mBinding.danmaku.isPrepared() ? View.GONE : View.VISIBLE); + mBinding.control.danmuSetting.setVisibility(isLock() || !Setting.isDanmuLoad() ? 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); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuAlphaDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuAlphaDialog.java deleted file mode 100644 index b84470bb1..000000000 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuAlphaDialog.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.fongmi.android.tv.ui.dialog; - -import android.content.DialogInterface; -import android.view.LayoutInflater; - -import androidx.appcompat.app.AlertDialog; -import androidx.fragment.app.Fragment; - -import com.fongmi.android.tv.R; -import com.fongmi.android.tv.Setting; -import com.fongmi.android.tv.databinding.DialogDanmuAlphaBinding; -import com.fongmi.android.tv.impl.DanmuAlphaCallback; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; - -public class DanmuAlphaDialog { - - private final DialogDanmuAlphaBinding binding; - private final DanmuAlphaCallback callback; - private int value; - - public static DanmuAlphaDialog create(Fragment fragment) { - return new DanmuAlphaDialog(fragment); - } - - public DanmuAlphaDialog(Fragment fragment) { - this.callback = (DanmuAlphaCallback) fragment; - this.binding = DialogDanmuAlphaBinding.inflate(LayoutInflater.from(fragment.getContext())); - } - - public void show() { - initDialog(); - initView(); - } - - private void initDialog() { - AlertDialog dialog = new MaterialAlertDialogBuilder(binding.getRoot().getContext()).setTitle(R.string.player_danmu_alpha).setView(binding.getRoot()).setPositiveButton(R.string.dialog_positive, this::onPositive).setNegativeButton(R.string.dialog_negative, this::onNegative).create(); - dialog.getWindow().setDimAmount(0); - dialog.show(); - } - - private void initView() { - binding.slider.setValue(value = Setting.getDanmuAlpha()); - } - - private void onPositive(DialogInterface dialog, int which) { - callback.setDanmuAlpha((int) binding.slider.getValue()); - dialog.dismiss(); - } - - private void onNegative(DialogInterface dialog, int which) { - callback.setDanmuAlpha(value); - dialog.dismiss(); - } -} diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuDialog.java new file mode 100644 index 000000000..9c6610bd5 --- /dev/null +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuDialog.java @@ -0,0 +1,83 @@ +package com.fongmi.android.tv.ui.dialog; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; +import androidx.viewbinding.ViewBinding; + +import com.fongmi.android.tv.R; +import com.fongmi.android.tv.Setting; +import com.fongmi.android.tv.databinding.DialogDanmuBinding; +import com.fongmi.android.tv.ui.activity.VideoActivity; +import com.fongmi.android.tv.utils.ResUtil; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.android.material.slider.Slider; + +public class DanmuDialog extends BaseDialog { + + private DialogDanmuBinding binding; + private String[] danmuSpeed; + private int speed; + private VideoActivity activity; + + public static DanmuDialog create() { + return new DanmuDialog(); + } + + public DanmuDialog() { + } + + public DanmuDialog show(FragmentActivity activity) { + for (Fragment f : activity.getSupportFragmentManager().getFragments()) if (f instanceof BottomSheetDialogFragment) return this; + show(activity.getSupportFragmentManager(), null); + this.activity = (VideoActivity) activity; + return this; + } + + @Override + protected ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) { + return binding = DialogDanmuBinding.inflate(inflater, container, false); + } + + @Override + protected void initView() { + binding.list.setVisibility(View.VISIBLE); + binding.speed.setValue(speed = Setting.getDanmuSpeed()); + binding.size.setValue(Setting.getDanmuSize()); + binding.line.setValue(Setting.getDanmuLine(2)); + binding.alpha.setValue(Setting.getDanmuAlpha()); + binding.speedText.setText((danmuSpeed = ResUtil.getStringArray(R.array.select_danmu_speed))[speed]); + } + + @Override + protected void initEvent() { + binding.speed.addOnChangeListener((@NonNull Slider slider, float value, boolean fromUser) -> { + int val = (int) slider.getValue(); + binding.speedText.setText(danmuSpeed[val]); + Setting.putDanmuSpeed(val); + this.activity.setDanmuViewSettings(); + }); + binding.size.addOnChangeListener((@NonNull Slider slider, float value, boolean fromUser) -> { + Setting.putDanmuSize(slider.getValue()); + this.activity.setDanmuViewSettings(); + }); + binding.line.addOnChangeListener((@NonNull Slider slider, float value, boolean fromUser) -> { + Setting.putDanmuLine((int) slider.getValue()); + this.activity.setDanmuViewSettings(); + }); + binding.alpha.addOnChangeListener((@NonNull Slider slider, float value, boolean fromUser) -> { + Setting.putDanmuAlpha((int) slider.getValue()); + this.activity.setDanmuViewSettings(); + }); + } + + @Override + public void dismiss() { + super.dismiss(); + } +} diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuLineDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuLineDialog.java deleted file mode 100644 index eff88c876..000000000 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuLineDialog.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.fongmi.android.tv.ui.dialog; - -import android.content.DialogInterface; -import android.view.LayoutInflater; - -import androidx.appcompat.app.AlertDialog; -import androidx.fragment.app.Fragment; - -import com.fongmi.android.tv.R; -import com.fongmi.android.tv.Setting; -import com.fongmi.android.tv.databinding.DialogDanmuLineBinding; -import com.fongmi.android.tv.impl.DanmuLineCallback; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; - -public class DanmuLineDialog { - - private final DialogDanmuLineBinding binding; - private final DanmuLineCallback callback; - private int value; - - public static DanmuLineDialog create(Fragment fragment) { - return new DanmuLineDialog(fragment); - } - - public DanmuLineDialog(Fragment fragment) { - this.callback = (DanmuLineCallback) fragment; - this.binding = DialogDanmuLineBinding.inflate(LayoutInflater.from(fragment.getContext())); - } - - public void show() { - initDialog(); - initView(); - } - - private void initDialog() { - AlertDialog dialog = new MaterialAlertDialogBuilder(binding.getRoot().getContext()).setTitle(R.string.player_danmu_line).setView(binding.getRoot()).setPositiveButton(R.string.dialog_positive, this::onPositive).setNegativeButton(R.string.dialog_negative, this::onNegative).create(); - dialog.getWindow().setDimAmount(0); - dialog.show(); - } - - private void initView() { - binding.slider.setValue(value = Setting.getDanmuLine(2)); - } - - private void onPositive(DialogInterface dialog, int which) { - callback.setDanmuLine((int) binding.slider.getValue()); - dialog.dismiss(); - } - - private void onNegative(DialogInterface dialog, int which) { - callback.setDanmuLine(value); - dialog.dismiss(); - } -} diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuSizeDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuSizeDialog.java deleted file mode 100644 index 9b62df999..000000000 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/DanmuSizeDialog.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.fongmi.android.tv.ui.dialog; - -import android.content.DialogInterface; -import android.view.LayoutInflater; - -import androidx.appcompat.app.AlertDialog; -import androidx.fragment.app.Fragment; - -import com.fongmi.android.tv.R; -import com.fongmi.android.tv.Setting; -import com.fongmi.android.tv.databinding.DialogDanmuSizeBinding; -import com.fongmi.android.tv.impl.DanmuSizeCallback; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; - -public class DanmuSizeDialog { - - private final DialogDanmuSizeBinding binding; - private final DanmuSizeCallback callback; - private float value; - - public static DanmuSizeDialog create(Fragment fragment) { - return new DanmuSizeDialog(fragment); - } - - public DanmuSizeDialog(Fragment fragment) { - this.callback = (DanmuSizeCallback) fragment; - this.binding = DialogDanmuSizeBinding.inflate(LayoutInflater.from(fragment.getContext())); - } - - public void show() { - initDialog(); - initView(); - } - - private void initDialog() { - AlertDialog dialog = new MaterialAlertDialogBuilder(binding.getRoot().getContext()).setTitle(R.string.player_danmu_size).setView(binding.getRoot()).setPositiveButton(R.string.dialog_positive, this::onPositive).setNegativeButton(R.string.dialog_negative, this::onNegative).create(); - dialog.getWindow().setDimAmount(0); - dialog.show(); - } - - private void initView() { - binding.slider.setValue(value = Setting.getDanmuSize()); - } - - private void onPositive(DialogInterface dialog, int which) { - callback.setDanmuSize(binding.slider.getValue()); - dialog.dismiss(); - } - - private void onNegative(DialogInterface dialog, int which) { - callback.setDanmuSize(value); - dialog.dismiss(); - } -} diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingDanmuFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingDanmuFragment.java deleted file mode 100644 index 73b0035fb..000000000 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingDanmuFragment.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.fongmi.android.tv.ui.fragment; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.viewbinding.ViewBinding; - -import com.fongmi.android.tv.R; -import com.fongmi.android.tv.Setting; -import com.fongmi.android.tv.databinding.FragmentSettingDanmuBinding; -import com.fongmi.android.tv.impl.DanmuAlphaCallback; -import com.fongmi.android.tv.impl.DanmuLineCallback; -import com.fongmi.android.tv.impl.DanmuSizeCallback; -import com.fongmi.android.tv.ui.base.BaseFragment; -import com.fongmi.android.tv.ui.dialog.DanmuAlphaDialog; -import com.fongmi.android.tv.ui.dialog.DanmuLineDialog; -import com.fongmi.android.tv.ui.dialog.DanmuSizeDialog; -import com.fongmi.android.tv.utils.ResUtil; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; - -public class SettingDanmuFragment extends BaseFragment implements DanmuLineCallback, DanmuSizeCallback, DanmuAlphaCallback { - - private FragmentSettingDanmuBinding mBinding; - private String[] danmuSpeed; - - public static SettingDanmuFragment newInstance() { - return new SettingDanmuFragment(); - } - - private String getSwitch(boolean value) { - return getString(value ? R.string.setting_on : R.string.setting_off); - } - - @Override - protected ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) { - return mBinding = FragmentSettingDanmuBinding.inflate(inflater, container, false); - } - - @Override - protected void initView() { - mBinding.danmuLoadText.setText(getSwitch(Setting.isDanmuLoad())); - mBinding.danmuSizeText.setText(String.valueOf(Setting.getDanmuSize())); - mBinding.danmuLineText.setText(String.valueOf(Setting.getDanmuLine(2))); - mBinding.danmuAlphaText.setText(String.valueOf(Setting.getDanmuAlpha())); - mBinding.danmuSpeedText.setText((danmuSpeed = ResUtil.getStringArray(R.array.select_danmu_speed))[Setting.getDanmuSpeed()]); - } - - @Override - protected void initEvent() { - mBinding.danmuSize.setOnClickListener(this::onDanmuSize); - mBinding.danmuLine.setOnClickListener(this::onDanmuLine); - mBinding.danmuLoad.setOnClickListener(this::setDanmuLoad); - mBinding.danmuAlpha.setOnClickListener(this::onDanmuAlpha); - mBinding.danmuSpeed.setOnClickListener(this::onDanmuSpeed); - } - - - private void onDanmuSize(View view) { - DanmuSizeDialog.create(this).show(); - } - - @Override - public void setDanmuSize(float size) { - mBinding.danmuSizeText.setText(String.valueOf(size)); - Setting.putDanmuSize(size); - } - - private void onDanmuLine(View view) { - DanmuLineDialog.create(this).show(); - } - - @Override - public void setDanmuLine(int line) { - mBinding.danmuLineText.setText(String.valueOf(line)); - Setting.putDanmuLine(line); - } - - private void setDanmuLoad(View view) { - Setting.putDanmuLoad(!Setting.isDanmuLoad()); - mBinding.danmuLoadText.setText(getSwitch(Setting.isDanmuLoad())); - } - - private void onDanmuAlpha(View view) { - DanmuAlphaDialog.create(this).show(); - } - - @Override - public void setDanmuAlpha(int alpha) { - mBinding.danmuAlphaText.setText(String.valueOf(alpha)); - Setting.putDanmuAlpha(alpha); - } - - private void onDanmuSpeed(View view) { - new MaterialAlertDialogBuilder(getActivity()).setTitle(R.string.player_danmu_speed).setNegativeButton(R.string.dialog_negative, null).setSingleChoiceItems(danmuSpeed, Setting.getDanmuSpeed(), (dialog, which) -> { - mBinding.danmuSpeedText.setText(danmuSpeed[which]); - Setting.putDanmuSpeed(which); - dialog.dismiss(); - }).show(); - } - -} diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java index 65e1b9d69..6054f2cc7 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java @@ -122,7 +122,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit mBinding.wallDefault.setOnClickListener(this::setWallDefault); mBinding.wallRefresh.setOnClickListener(this::setWallRefresh); mBinding.doh.setOnClickListener(this::setDoh); - mBinding.danmu.setOnClickListener(this::onDanmu); mBinding.custom.setOnClickListener(this::onCustom); } @@ -257,12 +256,8 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit getRoot().change(2); } - private void onDanmu(View view) { - getRoot().change(3); - } - private void onCustom(View view) { - getRoot().change(4); + getRoot().change(3); } private void onVersion(View view) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java index c82c31d49..e7d40a281 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java @@ -57,6 +57,7 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B mBinding.captionText.setText(getSwitch(Setting.isCaption())); mBinding.bufferText.setText(String.valueOf(Setting.getBuffer())); mBinding.subtitleText.setText(String.valueOf(Setting.getSubtitle())); + mBinding.danmuLoadText.setText(getSwitch(Setting.isDanmuLoad())); mBinding.flagText.setText((flag = ResUtil.getStringArray(R.array.select_flag))[Setting.getFlag()]); mBinding.httpText.setText((http = ResUtil.getStringArray(R.array.select_exo_http))[Setting.getHttp()]); mBinding.scaleText.setText((scale = ResUtil.getStringArray(R.array.select_scale))[Setting.getScale()]); @@ -79,6 +80,7 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B mBinding.caption.setOnClickListener(this::setCaption); mBinding.subtitle.setOnClickListener(this::onSubtitle); mBinding.caption.setOnLongClickListener(this::onCaption); + mBinding.danmuLoad.setOnClickListener(this::setDanmuLoad); mBinding.background.setOnClickListener(this::onBackground); } @@ -167,6 +169,11 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B mBinding.subtitleText.setText(String.valueOf(size)); } + private void setDanmuLoad(View view) { + Setting.putDanmuLoad(!Setting.isDanmuLoad()); + mBinding.danmuLoadText.setText(getSwitch(Setting.isDanmuLoad())); + } + private void onBackground(View view) { new MaterialAlertDialogBuilder(getActivity()).setTitle(R.string.player_background).setNegativeButton(R.string.dialog_negative, null).setSingleChoiceItems(background, Setting.getBackground(), (dialog, which) -> { mBinding.backgroundText.setText(background[which]); diff --git a/app/src/mobile/res/drawable/ic_control_danmu_setting.xml b/app/src/mobile/res/drawable/ic_control_danmu_setting.xml new file mode 100644 index 000000000..6c74af235 --- /dev/null +++ b/app/src/mobile/res/drawable/ic_control_danmu_setting.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/mobile/res/layout/dialog_danmu.xml b/app/src/mobile/res/layout/dialog_danmu.xml new file mode 100644 index 000000000..3ebec69dc --- /dev/null +++ b/app/src/mobile/res/layout/dialog_danmu.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/mobile/res/layout/dialog_danmu_alpha.xml b/app/src/mobile/res/layout/dialog_danmu_alpha.xml deleted file mode 100644 index 7d86652c9..000000000 --- a/app/src/mobile/res/layout/dialog_danmu_alpha.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/mobile/res/layout/dialog_danmu_line.xml b/app/src/mobile/res/layout/dialog_danmu_line.xml deleted file mode 100644 index 8a8475491..000000000 --- a/app/src/mobile/res/layout/dialog_danmu_line.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/mobile/res/layout/dialog_danmu_size.xml b/app/src/mobile/res/layout/dialog_danmu_size.xml deleted file mode 100644 index f4eb98aaa..000000000 --- a/app/src/mobile/res/layout/dialog_danmu_size.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/mobile/res/layout/fragment_setting.xml b/app/src/mobile/res/layout/fragment_setting.xml index 797a3eaf3..4115d3fed 100644 --- a/app/src/mobile/res/layout/fragment_setting.xml +++ b/app/src/mobile/res/layout/fragment_setting.xml @@ -230,23 +230,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/mobile/res/layout/fragment_setting_player.xml b/app/src/mobile/res/layout/fragment_setting_player.xml index 46fd21cc0..7fe2e4fc1 100644 --- a/app/src/mobile/res/layout/fragment_setting_player.xml +++ b/app/src/mobile/res/layout/fragment_setting_player.xml @@ -183,6 +183,33 @@ + + + + + + + + - + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center" + android:orientation="vertical"> + + + + +