Add danmaku show/hide setting

pull/589/head
FongMi 10 months ago
parent 702050b7f8
commit 2c6e56c574
  1. 22
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 13
      app/src/leanback/res/layout/view_control_vod.xml
  3. 8
      app/src/main/java/com/fongmi/android/tv/Setting.java
  4. 3
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  5. 1
      app/src/main/res/values-zh-rCN/strings.xml
  6. 1
      app/src/main/res/values-zh-rTW/strings.xml
  7. 1
      app/src/main/res/values/strings.xml
  8. 18
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  9. 13
      app/src/mobile/res/drawable/ic_control_danmaku_off.xml
  10. 19
      app/src/mobile/res/drawable/ic_control_danmaku_on.xml
  11. 22
      app/src/mobile/res/layout/view_control_vod.xml

@ -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());

@ -214,6 +214,19 @@
android:textSize="14sp"
tools:text="00:00" />
<TextView
android:id="@+id/danmaku"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:nextFocusDown="@id/timeBar"
android:text="@string/play_danmaku"
android:textColor="@color/text"
android:textSize="14sp" />
<TextView
android:id="@+id/loop"
android:layout_width="wrap_content"

@ -233,6 +233,14 @@ public class Setting {
Prefers.put("audio_prefer", audioPrefer);
}
public static boolean isDanmakuShow() {
return Prefers.getBoolean("danmaku_show");
}
public static void putDanmakuShow(boolean danmakuShow) {
Prefers.put("danmaku_show", danmakuShow);
}
public static boolean isDanmakuLoad() {
return Prefers.getBoolean("danmaku_load");
}

@ -635,7 +635,8 @@ public class Players implements Player.Listener, ParseCallback, DrawHandler.Call
App.post(() -> {
if (isPlaying()) danmakuView.start(getPosition());
else danmakuView.pause();
danmakuView.show();
if (Setting.isDanmakuShow()) danmakuView.show();
else danmakuView.hide();
});
}

@ -36,6 +36,7 @@
<string name="play_loop">循环</string>
<string name="play_timer">定时</string>
<string name="play_change">换源</string>
<string name="play_danmaku">弹幕</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
<string name="play_invert">反转</string>

@ -36,6 +36,7 @@
<string name="play_loop">循環</string>
<string name="play_timer">定時</string>
<string name="play_change">換源</string>
<string name="play_danmaku">彈幕</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
<string name="play_invert">反轉</string>

@ -36,6 +36,7 @@
<string name="play_loop">Loop</string>
<string name="play_timer">Timer</string>
<string name="play_change">Change</string>
<string name="play_danmaku">Danmaku</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
<string name="play_invert">Invert</string>

@ -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());

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M18.1153,13.5847C20.474,13.5847 22.3861,15.4968 22.3861,17.8556C22.3861,20.2143 20.474,22.1264 18.1153,22.1264C15.7566,22.1264 13.8444,20.2143 13.8444,17.8556C13.8444,15.4968 15.7566,13.5847 18.1153,13.5847ZM15.5185,16.3731C15.2686,16.8101 15.1257,17.3161 15.1257,17.8556C15.1257,19.5067 16.4642,20.8451 18.1153,20.8451C18.6548,20.8451 19.1609,20.7022 19.5978,20.4522L15.5185,16.3731ZM16.4259,2.011C16.8765,2.3349 16.9793,2.9628 16.6554,3.4134L15.3956,5.1641C16.2121,5.1847 17.09,5.2116 18.0294,5.2448C19.8194,5.308 21.307,6.6445 21.561,8.4175C21.7223,9.5441 21.7794,10.9943 21.7794,12.6202C21.7794,12.9985 21.4727,13.3053 21.0943,13.3053C20.7159,13.3053 20.4092,12.9985 20.4092,12.6202C20.4092,11.0546 20.3557,9.6672 20.2046,8.6118C20.0447,7.4954 19.108,6.654 17.981,6.6142C15.5659,6.5288 13.5628,6.4853 11.9725,6.4836C10.3849,6.4853 8.3817,6.5288 5.9666,6.6142C4.8396,6.654 3.9029,7.4954 3.743,8.6118C3.5919,9.6672 3.5156,10.9792 3.5156,12.5447C3.5156,14.4232 3.6254,16.0339 3.8435,17.3745C4.02,18.4589 4.9302,19.2726 6.0276,19.3269C7.897,19.4194 10.3306,19.4657 12.4919,19.4657C12.8702,19.4657 13.177,19.7724 13.177,20.1508C13.177,20.5292 12.8702,20.8359 12.4919,20.8359C10.3088,20.8359 7.8527,20.7891 5.9599,20.6955C4.217,20.6092 2.7714,19.3169 2.4911,17.5945C2.2601,16.1747 2.1453,14.4922 2.1453,12.5447C2.1453,10.9188 2.2253,9.5441 2.3867,8.4175C2.6406,6.6445 4.1282,5.308 5.9183,5.2448C6.7471,5.2155 7.528,5.1911 8.2611,5.1716L7.069,3.384C6.7613,2.9221 6.8864,2.2983 7.3482,1.9907C7.7771,1.705 8.3457,1.7924 8.671,2.1762L8.7416,2.27L10.5023,4.9135C10.5473,4.981 10.583,5.052 10.6097,5.1249C11.0007,5.1188 11.373,5.1153 11.7265,5.114L11.8739,5.1133C12.2281,5.1133 12.6026,5.1154 12.9974,5.1196C13.0282,5.0377 13.07,4.9585 13.1235,4.8841L15.0235,2.2405C15.3474,1.7899 15.9753,1.6871 16.4259,2.011ZM18.1153,14.866C17.486,14.866 16.9021,15.0604 16.4205,15.3925L20.5786,19.55C20.9105,19.0684 21.1049,18.4847 21.1049,17.8556C21.1049,16.2045 19.7664,14.866 18.1153,14.866ZM10.446,8.2636L10.446,11.6398L8.4729,11.6398L8.3194,13.1196L10.5118,13.1196C10.5118,15.0051 10.446,16.2657 10.3364,16.9015C10.2048,17.5373 9.6458,17.888 8.6483,17.9538C8.3633,17.9538 8.0783,17.9319 7.7713,17.91L7.4754,16.8467C7.7604,16.8795 8.0673,16.9015 8.3742,16.9015C8.9223,16.9015 9.2292,16.7261 9.306,16.3753C9.3827,16.0245 9.4266,15.2682 9.4266,14.1062L7.1575,14.1062L7.4644,10.6642L9.3169,10.6642L9.3169,9.2392L7.2561,9.2392L7.2561,8.2636L10.446,8.2636ZM13.2068,15.0262C13.0091,15.3617 12.8484,15.7217 12.7305,16.1005L10.7749,16.1013L10.7749,15.027L13.2068,15.0262ZM15.1486,7.7703L16.2338,8.1539C16.0146,8.6801 15.7625,9.1515 15.4884,9.568L16.76,9.568L16.7598,12.5727C16.4104,12.6321 16.073,12.7269 15.7515,12.8532L15.7515,12.3742L14.5019,12.3742L14.5019,13.2293L14.9909,13.2278C14.3511,13.6119 13.8021,14.1317 13.3836,14.7473L13.3838,14.1829L11.1695,14.1829L11.1695,9.568L12.4849,9.568C12.2328,9.0528 11.9587,8.6034 11.6628,8.2088L12.7041,7.858C13.0111,8.2964 13.2851,8.7568 13.5153,9.2611L12.8247,9.568L14.3374,9.568C14.6444,9.009 14.9075,8.4061 15.1486,7.7703ZM13.3838,12.3742L12.1889,12.3742L12.1889,13.2293L13.3838,13.2293L13.3838,12.3742ZM13.3838,10.5327L12.1889,10.5327L12.1889,11.4315L13.3838,11.4315L13.3838,10.5327ZM15.7515,10.5327L14.5019,10.5327L14.5019,11.4315L15.7515,11.4315L15.7515,10.5327Z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M7.3669,1.9941C7.8304,1.6854 8.4564,1.8109 8.7651,2.2744L8.7651,2.2744L10.5319,4.9272C10.5768,4.9946 10.6126,5.0655 10.6394,5.1383C11.1628,5.1311 11.6526,5.1276 12.1088,5.1276L11.9959,5.1277L11.9959,5.1277L12.1128,5.1277L12.1128,5.1277L12,5.1276C12.3285,5.1276 12.6744,5.1294 13.0377,5.133C13.0674,5.0503 13.1091,4.9716 13.1623,4.8976L15.0689,2.2448C15.3939,1.7926 16.024,1.6895 16.4762,2.0145C16.9284,2.3396 17.0315,2.9696 16.7065,3.4218L15.4433,5.1763C16.2882,5.1973 17.1993,5.225 18.1769,5.2596C19.9731,5.323 21.3759,6.73 21.6307,8.5092C21.7413,9.2807 21.7785,11.6334 21.8134,12.6368C21.8266,13.0162 21.5297,13.3345 21.1502,13.3477C20.7707,13.3609 20.4524,13.064 20.4392,12.6845C20.406,11.7277 20.3726,9.4233 20.2696,8.7041C20.1092,7.5839 19.2593,6.6737 18.1283,6.6337C15.6816,6.5473 13.6562,6.5036 12.0531,6.5027C10.4524,6.5036 8.4271,6.5473 5.9805,6.6337C4.8495,6.6737 3.9096,7.5181 3.7491,8.6383C3.5974,9.6974 3.5208,11.014 3.5208,12.5849C3.5208,14.4699 3.6311,16.0862 3.85,17.4315C4.027,18.5198 4.9404,19.3363 6.0416,19.3908C7.9175,19.4836 9.3036,19.53 11.4724,19.53C11.8521,19.53 12.1599,19.8378 12.1599,20.2175C12.1599,20.5972 11.8521,20.905 11.4724,20.905C9.2817,20.905 7.8731,20.8581 5.9737,20.7641C4.2247,20.6776 2.774,19.3807 2.4928,17.6524C2.261,16.2276 2.1458,14.5392 2.1458,12.5849C2.1458,10.9534 2.2261,9.5739 2.388,8.4434C2.6428,6.6642 4.1356,5.323 5.9319,5.2596C6.7635,5.2302 7.547,5.2057 8.2826,5.1861L7.0866,3.3923C6.7779,2.9288 6.9034,2.3028 7.3669,1.9941ZM10.4645,8.2946L10.4645,11.6826L8.4845,11.6826L8.3305,13.1676L10.5305,13.1676C10.5305,15.0596 10.4645,16.3246 10.3545,16.9626C10.2225,17.6006 9.6615,17.9526 8.6605,18.0186C8.3745,18.0186 8.0885,17.9966 7.7805,17.9746L7.4835,16.9076C7.7695,16.9406 8.0775,16.9626 8.3855,16.9626C8.9355,16.9626 9.2435,16.7866 9.3205,16.4346C9.3975,16.0826 9.4415,15.3236 9.4415,14.1576L7.1645,14.1576L7.4725,10.7036L9.3315,10.7036L9.3315,9.2736L7.2635,9.2736L7.2635,8.2946L10.4645,8.2946ZM15.1835,7.7996L16.2725,8.1846C16.0525,8.7126 15.7995,9.1856 15.5245,9.6036L16.8005,9.6036L16.8005,14.2346L14.5345,14.2346L14.5345,15.0816L17.2295,15.0816L17.2295,16.1596L14.5345,16.1596L14.5345,17.2443L14.4237,17.2432C14.1282,16.9996 13.7756,16.8637 13.4161,16.8373L13.4125,16.1596L10.7945,16.1596L10.7945,15.0816L13.4125,15.0816L13.4125,14.2346L11.1905,14.2346L11.1905,9.6036L12.5105,9.6036C12.2575,9.0866 11.9825,8.6356 11.6855,8.2396L12.7305,7.8876C13.0385,8.3276 13.3135,8.7896 13.5445,9.2956L12.8515,9.6036L14.3695,9.6036C14.6775,9.0426 14.9415,8.4376 15.1835,7.7996ZM15.7885,12.4196L14.5345,12.4196L14.5345,13.2776L15.7885,13.2776L15.7885,12.4196ZM13.4125,12.4196L12.2135,12.4196L12.2135,13.2776L13.4125,13.2776L13.4125,12.4196ZM13.4125,10.5716L12.2135,10.5716L12.2135,11.4736L13.4125,11.4736L13.4125,10.5716ZM15.7885,10.5716L14.5345,10.5716L14.5345,11.4736L15.7885,11.4736L15.7885,10.5716Z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M21.6199,14.869C21.8969,14.561 22.3712,14.5359 22.6791,14.813C22.959,15.0648 23.0052,15.4796 22.8032,15.7843L22.7351,15.8722L16.9306,22.3705C16.6648,22.666 16.2207,22.699 15.9154,22.4632L15.8358,22.3922L12.8796,19.3578C12.5905,19.0611 12.5967,18.5863 12.8934,18.2972C13.1631,18.0345 13.5801,18.0157 13.8708,18.2374L13.954,18.3111L16.351,20.771L21.6199,14.869Z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

@ -141,6 +141,28 @@
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/danmaku"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="8dp"
android:visibility="gone"
tools:src="@drawable/ic_control_danmaku_on"
tools:visibility="visible" />
</LinearLayout>
<include
android:id="@+id/right"
layout="@layout/view_control_right"

Loading…
Cancel
Save