diff --git a/app/build.gradle b/app/build.gradle index 8529df532..2b20cfd38 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk 21 targetSdk 28 versionCode 223 - versionName "0122" + versionName "0123" javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] 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 07586cb6f..e77b9bc44 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 @@ -639,7 +639,10 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mBinding.episodeVert.setNumColumns(numColumns); mBinding.episodeVert.setColumnWidth((width - ((numColumns - 1) * ResUtil.dp2px(8))) / numColumns); mBinding.episodeVert.setLayoutParams(params); - mBinding.episodeVert.setWindowAlignmentOffsetPercent(6); + mBinding.episodeVert.setWindowAlignment(BaseGridView.WINDOW_ALIGN_LOW_EDGE); + mBinding.episodeVert.setWindowAlignmentOffset(0); + mBinding.episodeVert.setWindowAlignmentOffsetPercent(0f); + mBinding.episodeVert.setItemAlignmentOffsetPercent(0f); mEpisodePresenter.setNumColumns(numColumns); mEpisodePresenter.setNumRows(rowNum); } @@ -1536,11 +1539,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List @Override public boolean dispatchKeyEvent(KeyEvent event) { - if (!isFullscreen() && KeyUtil.isBackKey(event) && getFocus1() != mBinding.video) { - mBinding.video.requestFocus(); - mFocus1 = null; - return true; - } if (isFullscreen() && KeyUtil.isMenuKey(event)) onToggle(); if (isVisible(mBinding.control.getRoot())) setR1Callback(); if (isVisible(mBinding.control.getRoot())) mFocus2 = getCurrentFocus(); diff --git a/app/src/main/java/com/fongmi/android/tv/Setting.java b/app/src/main/java/com/fongmi/android/tv/Setting.java index 9b31afd0b..0329cace5 100644 --- a/app/src/main/java/com/fongmi/android/tv/Setting.java +++ b/app/src/main/java/com/fongmi/android/tv/Setting.java @@ -332,4 +332,21 @@ public class Setting { public static boolean hasCaption() { return new Intent(Settings.ACTION_CAPTIONING_SETTINGS).resolveActivity(App.get().getPackageManager()) != null; } + + public static boolean isDisplayTime() { + return Prefers.getBoolean("display_time", false); + } + + public static void putDisplayTime(boolean display) { + Prefers.put("display_time", display); + } + + public static boolean isDisplaySpeed() { + return Prefers.getBoolean("display_speed", false); + } + + public static void putDisplaySpeed(boolean display) { + Prefers.put("display_speed", display); + } + } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index e44964c8a..2bcf39bd4 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -35,6 +35,8 @@ 上集 循环 定时 + 时间 + 网速 弹幕 换源 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 7eeabf388..b62a32d39 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -35,6 +35,8 @@ 上集 循環 定時 + 时间 + 网速 彈幕 換源 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bf619cd0d..44bb9d253 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,6 +35,8 @@ Prev Loop Timer + Time + Net Speed Danmu Change 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 2fb5b4310..3e8440241 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 @@ -308,7 +308,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mObserveSearch = this::setSearch; mDialogs = new ArrayList<>(); mBroken = new ArrayList<>(); - mClock = Clock.create(); + mClock = Clock.create(mBinding.display.time); mR0 = this::stopService; mR1 = this::hideControl; mR2 = this::setTraffic; @@ -318,6 +318,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo setForeground(true); setRecyclerView(); setVideoView(); + setDisplayView(); setDanmuView(); setViewModel(); showProgress(); @@ -427,6 +428,11 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo checkDanmuImg(); } + private void setDisplayView() { + mBinding.display.getRoot().setVisibility(View.VISIBLE); + showDisplayInfo(); + } + @Override public void setSubtitle(int size) { getExo().getSubtitleView().setFixedTextSize(Dimension.SP, size); @@ -919,6 +925,17 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo else onRefresh(); } + private void showDisplayInfo() { + boolean controlVisible = isVisible(mBinding.control.getRoot()); + boolean visible = (!controlVisible || isLock()); + mBinding.display.time.setVisibility(Setting.isDisplayTime() && visible ? View.VISIBLE : View.GONE); + mBinding.display.netspeed.setVisibility(Setting.isDisplaySpeed() && visible ? View.VISIBLE : View.GONE); + } + + private void onTimeChangeDisplaySpeed() { + if (Setting.isDisplaySpeed() && (!isVisible(mBinding.control.getRoot()) || isLock())) Traffic.setSpeed(mBinding.display.netspeed); + } + private void toggleFullscreen() { if (isFullscreen()) exitFullscreen(); else enterFullscreen(); @@ -1007,6 +1024,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.bottom.setVisibility(isLock() ? View.GONE : View.VISIBLE); mBinding.control.top.setVisibility(isLock() ? View.GONE : View.VISIBLE); mBinding.control.getRoot().setVisibility(View.VISIBLE); + showDisplayInfo(); checkPlayImg(mPlayers.isPlaying()); setR1Callback(); } @@ -1014,6 +1032,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private void hideControl() { mBinding.control.getRoot().setVisibility(View.GONE); App.removeCallbacks(mR1); + showDisplayInfo(); } private void hideSheet() { @@ -1154,6 +1173,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo @Override public void onTimeChanged() { + onTimeChangeDisplaySpeed(); long position, duration; mHistory.setPosition(position = mPlayers.getPosition()); mHistory.setDuration(duration = mPlayers.getDuration()); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java index aa8c9df58..5e0590152 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java @@ -13,6 +13,7 @@ import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.bean.History; import com.fongmi.android.tv.bean.Parse; import com.fongmi.android.tv.databinding.ActivityVideoBinding; @@ -95,6 +96,8 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis binding.opening.setText(parent.control.action.opening.getText()); binding.loop.setActivated(parent.control.action.loop.isActivated()); binding.timer.setActivated(Timer.get().isRunning()); + binding.dptime.setActivated(Setting.isDisplayTime()); + binding.dpspeed.setActivated(Setting.isDisplaySpeed()); setTrackVisible(); setScaleText(); setParse(); @@ -116,6 +119,22 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis binding.player.setOnLongClickListener(v -> longClick(binding.player, parent.control.action.player)); binding.ending.setOnLongClickListener(v -> longClick(binding.ending, parent.control.action.ending)); binding.opening.setOnLongClickListener(v -> longClick(binding.opening, parent.control.action.opening)); + binding.dptime.setOnClickListener(v -> displayTime()); + binding.dpspeed.setOnClickListener(v -> displaySpeed()); + } + + private void displayTime() { + boolean display = Setting.isDisplayTime(); + parent.display.time.setVisibility(!display ? View.VISIBLE : View.GONE); + Setting.putDisplayTime(!display); + binding.dptime.setActivated(!display); + } + + private void displaySpeed() { + boolean display = Setting.isDisplaySpeed(); + parent.display.netspeed.setVisibility(!display ? View.VISIBLE : View.GONE); + Setting.putDisplaySpeed(!display); + binding.dpspeed.setActivated(!display); } private void onTimer(View view) { diff --git a/app/src/mobile/res/layout/activity_video.xml b/app/src/mobile/res/layout/activity_video.xml index 42d4ea850..8c5461329 100644 --- a/app/src/mobile/res/layout/activity_video.xml +++ b/app/src/mobile/res/layout/activity_video.xml @@ -56,6 +56,13 @@ android:layout_height="match_parent" android:visibility="gone" /> + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/mobile/res/values-zh-rCN/strings.xml b/app/src/mobile/res/values-zh-rCN/strings.xml index f9e72c9f9..7d40b5958 100644 --- a/app/src/mobile/res/values-zh-rCN/strings.xml +++ b/app/src/mobile/res/values-zh-rCN/strings.xml @@ -30,6 +30,7 @@ 缩放 轨道 其它 + 屏显 删除全部纪录? diff --git a/app/src/mobile/res/values-zh-rTW/strings.xml b/app/src/mobile/res/values-zh-rTW/strings.xml index 82c8f6f22..763d748b4 100644 --- a/app/src/mobile/res/values-zh-rTW/strings.xml +++ b/app/src/mobile/res/values-zh-rTW/strings.xml @@ -30,6 +30,7 @@ 縮放 軌道 其它 + 熒幕顯示 刪除全部紀錄? diff --git a/app/src/mobile/res/values/strings.xml b/app/src/mobile/res/values/strings.xml index f74a7fd40..7701c0257 100644 --- a/app/src/mobile/res/values/strings.xml +++ b/app/src/mobile/res/values/strings.xml @@ -30,6 +30,7 @@ Scale Track Other + Display Delete all records?