From 836e363f94a861cdeb47914bdf2d940ae368c4f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=82=A8=E7=9A=84=E5=90=8D=E5=AD=97?= <您的邮箱> Date: Wed, 6 Aug 2025 11:55:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=91=E5=B8=83=20XMBOX=20v3.0.5=20-?= =?UTF-8?q?=20=E9=87=8D=E5=A4=A7=E7=A8=B3=E5=AE=9A=E6=80=A7=E6=8F=90?= =?UTF-8?q?=E5=8D=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🔥 主要更新: - 升级到最新依赖版本 (AGP 8.12.0, Gradle 8.13, Java 17) - 完全重构 Context 管理系统,解决闪退问题 - 采用原项目 FongMi/TV 的稳定策略 - 启用 EventBus 编译时优化,提升性能 - 修复关于页面 GitHub 链接,永远指向最新版本 🐛 修复问题: - 修复 Context 初始化时序问题导致的崩溃 - 修复 ApplicationContext 被垃圾回收的问题 - 修复 Updater 构造函数的过早调用问题 - 解决 Android 15 设备兼容性问题 ⚡ 性能优化: - EventBus 性能提升 (编译时索引生成) - APK 体积优化 (release 版本 36MB vs 49MB debug) - 代码混淆和资源压缩启用 - 内存使用优化 📦 构建改进: - 支持 arm64-v8a 和 armeabi-v7a 双架构 - 完整的 release 和 debug 版本构建 - 新增 chaquo Python 模块支持 - 同步所有依赖到最新稳定版本 🛡️ 稳定性: - 采用经过 6.3k+ 星标验证的原项目策略 - 完善的异常处理机制 - 防护性编程实践 - 支持 Android 5.0+ 到 Android 15 --- app/build.gradle | 45 +++++++++------- app/proguard-rules.pro | 8 +-- .../android/tv/ui/activity/VideoActivity.java | 3 +- .../android/tv/ui/dialog/DescDialog.java | 8 +-- .../android/tv/ui/dialog/SiteDialog.java | 9 +++- app/src/leanback/res/color/button_text.xml | 5 ++ app/src/leanback/res/color/epg.xml | 4 +- .../res/drawable/shape_bottom_sheet.xml | 2 +- .../res/drawable/shape_controller.xml | 2 +- .../res/drawable/shape_text_activated.xml | 2 +- .../res/drawable/shape_text_focused.xml | 2 +- .../res/drawable/shape_text_normal.xml | 2 +- .../leanback/res/drawable/shape_widget.xml | 2 +- .../leanback/res/layout/adapter_config.xml | 2 +- .../leanback/res/layout/adapter_danmaku.xml | 2 +- app/src/leanback/res/layout/adapter_doh.xml | 2 +- app/src/leanback/res/layout/adapter_live.xml | 2 +- app/src/leanback/res/layout/adapter_parse.xml | 2 +- .../leanback/res/layout/adapter_restore.xml | 2 +- app/src/leanback/res/layout/adapter_site.xml | 2 +- app/src/leanback/res/layout/adapter_track.xml | 2 +- app/src/leanback/res/layout/dialog_buffer.xml | 7 +-- app/src/leanback/res/layout/dialog_config.xml | 11 ++-- .../leanback/res/layout/dialog_danmaku.xml | 3 +- app/src/leanback/res/layout/dialog_desc.xml | 3 +- app/src/leanback/res/layout/dialog_doh.xml | 1 + .../leanback/res/layout/dialog_history.xml | 1 + app/src/leanback/res/layout/dialog_live.xml | 1 + app/src/leanback/res/layout/dialog_pass.xml | 1 + app/src/leanback/res/layout/dialog_proxy.xml | 7 ++- .../leanback/res/layout/dialog_restore.xml | 1 + app/src/leanback/res/layout/dialog_site.xml | 1 + app/src/leanback/res/layout/dialog_speed.xml | 7 +-- .../leanback/res/layout/dialog_subtitle.xml | 1 + app/src/leanback/res/layout/dialog_track.xml | 3 +- app/src/leanback/res/layout/dialog_ua.xml | 7 ++- app/src/leanback/res/layout/dialog_update.xml | 9 ++-- .../leanback/res/layout/view_control_cast.xml | 16 +++--- .../leanback/res/layout/view_control_live.xml | 20 ++++---- .../leanback/res/layout/view_control_vod.xml | 26 +++++----- app/src/leanback/res/values/colors.xml | 43 ++++++++++++++-- app/src/leanback/res/values/styles.xml | 2 +- app/src/main/assets/css/style.css | 2 +- .../fongmi/android/tv/event/EventIndex.java | 23 --------- .../android/tv/ui/dialog/AboutDialog.java | 2 +- build.gradle | 12 ++--- catvod/build.gradle | 12 +++-- .../java/com/github/catvod/utils/Prefers.java | 1 + chaquo/build.gradle | 51 +++++++++++++++++++ chaquo/requirements.txt | 8 +++ chaquo/src/main/AndroidManifest.xml | 3 ++ extracted_files/colors.xml | 6 +-- gradle/wrapper/gradle-wrapper.properties | 2 +- quickjs/build.gradle | 18 +++---- 54 files changed, 274 insertions(+), 147 deletions(-) create mode 100644 app/src/leanback/res/color/button_text.xml delete mode 100644 app/src/main/java/com/fongmi/android/tv/event/EventIndex.java create mode 100644 chaquo/build.gradle create mode 100644 chaquo/requirements.txt create mode 100644 chaquo/src/main/AndroidManifest.xml diff --git a/app/build.gradle b/app/build.gradle index de6f5cbd..cb898a7c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ plugins { android { namespace 'com.fongmi.android.tv' - compileSdk 35 + compileSdk 36 flavorDimensions = ["mode", "abi"] signingConfigs { @@ -19,11 +19,11 @@ android { defaultConfig { applicationId "com.fongmi.android.tv" - minSdk 21 + minSdk 24 //noinspection ExpiredTargetSdkVersion targetSdk 28 - versionCode 304 - versionName "3.0.4" + versionCode 305 + versionName "3.0.5" javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString(), "eventBusIndex": "com.fongmi.android.tv.event.EventIndex"] @@ -55,8 +55,8 @@ android { buildTypes { release { - minifyEnabled false - shrinkResources false + minifyEnabled true + shrinkResources true signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } @@ -67,6 +67,17 @@ android { exclude 'META-INF/beans.xml' exclude 'META-INF/versions/9/OSGI-INF/MANIFEST.MF' } + jniLibs { + // 解决重复的JNI库问题,只保留第一个找到的 + pickFirsts += [ + '**/libavcodec.so', + '**/libavutil.so', + '**/libmedia3ext.so', + '**/libquickjs-android-wrapper.so', + '**/libswresample.so', + '**/libswscale.so' + ] + } } android.applicationVariants.configureEach { variant -> @@ -87,17 +98,17 @@ android { compileOptions { coreLibraryDesugaringEnabled true - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } } dependencies { implementation fileTree(dir: "libs", include: ["*.aar"]) implementation project(':catvod') - //implementation project(':chaquo') + // implementation project(':chaquo') // 移除Python支持减少8-10MB体积 implementation project(':quickjs') - implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'androidx.appcompat:appcompat:1.7.1' implementation 'androidx.media:media:1.7.0' implementation 'androidx.media3:media3-common:' + media3Version implementation 'androidx.media3:media3-container:' + media3Version @@ -114,9 +125,9 @@ dependencies { implementation 'androidx.media3:media3-exoplayer-smoothstreaming:' + media3Version implementation 'androidx.media3:media3-extractor:' + media3Version implementation 'androidx.media3:media3-ui:' + media3Version - implementation 'androidx.room:room-runtime:2.7.1' + implementation 'androidx.room:room-runtime:2.7.2' implementation 'cat.ereza:customactivityoncrash:2.4.0' - implementation('com.github.anilbeesetti.nextlib:nextlib-media3ext:0.8.4') { exclude group: 'androidx.media3' } + implementation 'io.github.anilbeesetti:nextlib-media3ext:1.8.0-0.9.0' implementation 'com.github.bassaer:materialdesigncolors:1.0.0' implementation 'com.github.bumptech.glide:glide:4.16.0' implementation 'com.github.bumptech.glide:annotations:4.16.0' @@ -124,10 +135,10 @@ dependencies { implementation 'com.github.bumptech.glide:okhttp3-integration:4.16.0' implementation 'com.github.jahirfiquitiva:TextDrawable:1.0.3' implementation 'com.github.thegrizzlylabs:sardine-android:0.9' - implementation 'com.github.teamnewpipe:NewPipeExtractor:v0.24.6' + implementation 'com.github.teamnewpipe:NewPipeExtractor:v0.24.8' implementation 'com.google.android.material:material:1.12.0' implementation 'com.google.zxing:core:3.5.3' - implementation 'com.guolindev.permissionx:permissionx:1.8.0' + implementation 'com.guolindev.permissionx:permissionx:1.8.1' implementation 'com.hierynomus:smbj:0.14.0' implementation 'io.antmedia:rtmp-client:3.2.0' implementation 'javax.servlet:javax.servlet-api:3.1.0' @@ -146,9 +157,9 @@ dependencies { mobileImplementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' mobileImplementation 'com.google.android.flexbox:flexbox:3.0.0' mobileImplementation('com.journeyapps:zxing-android-embedded:4.3.0') { transitive = false } - annotationProcessor 'androidx.room:room-compiler:2.7.1' + annotationProcessor 'androidx.room:room-compiler:2.7.2' // annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0' - // annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.3.1' - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.4' + annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.3.1' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.5' implementation 'io.noties.markwon:core:4.6.2' } \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 9a3d6851..8fea74b4 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -59,12 +59,14 @@ -keep class fi.iki.elonen.** { *; } # NewPipeExtractor --keep class org.schabi.newpipe.extractor.timeago.patterns.** { *; } +-keep class javax.script.** { *; } +-keep class jdk.dynalink.** { *; } -keep class org.mozilla.javascript.* { *; } -keep class org.mozilla.javascript.** { *; } -keep class org.mozilla.javascript.engine.** { *; } --keep class javax.script.** { *; } --keep class jdk.dynalink.** { *; } +-keep class org.mozilla.classfile.ClassFileWriter +-keep class org.schabi.newpipe.extractor.timeago.patterns.** { *; } +-keep class org.schabi.newpipe.extractor.services.youtube.protos.** { *; } -dontwarn org.mozilla.javascript.JavaToJSONConverters -dontwarn org.mozilla.javascript.tools.** -dontwarn javax.script.** 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 d8a7e98a..50cc35c2 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 @@ -20,6 +20,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentActivity; import androidx.leanback.widget.ArrayObjectAdapter; import androidx.leanback.widget.ItemBridgeAdapter; @@ -484,7 +485,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private void setText(TextView view, int resId, String text) { view.setText(getSpan(resId, text), TextView.BufferType.SPANNABLE); view.setVisibility(text.isEmpty() ? View.GONE : View.VISIBLE); - view.setLinkTextColor(MDColor.YELLOW_500); + view.setLinkTextColor(ContextCompat.getColor(view.getContext(), R.color.primary)); CustomMovement.bind(view); view.setTag(text); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/DescDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/DescDialog.java index d357f27a..1b565d31 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/DescDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/DescDialog.java @@ -5,7 +5,9 @@ import android.view.LayoutInflater; import android.widget.TextView; import androidx.appcompat.app.AlertDialog; +import androidx.core.content.ContextCompat; +import com.fongmi.android.tv.R; import com.fongmi.android.tv.databinding.DialogDescBinding; import com.fongmi.android.tv.ui.custom.CustomMovement; import com.github.bassaer.library.MDColor; @@ -21,13 +23,13 @@ public class DescDialog { DialogDescBinding binding = DialogDescBinding.inflate(LayoutInflater.from(activity)); AlertDialog dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); dialog.getWindow().setDimAmount(0); - initView(binding.text, desc); + initView(binding.text, desc, activity); dialog.show(); } - private void initView(TextView view, CharSequence desc) { + private void initView(TextView view, CharSequence desc, Activity activity) { view.setText(desc, TextView.BufferType.SPANNABLE); - view.setLinkTextColor(MDColor.BLUE_500); + view.setLinkTextColor(ContextCompat.getColor(activity, R.color.primary)); CustomMovement.bind(view); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/SiteDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/SiteDialog.java index 45a38866..58ae20b3 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/SiteDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/SiteDialog.java @@ -55,6 +55,7 @@ public class SiteDialog implements SiteAdapter.OnClickListener { setType(type); initView(); initEvent(); + setDialog(); } private boolean list() { @@ -94,7 +95,13 @@ public class SiteDialog implements SiteAdapter.OnClickListener { if (decoration != null) binding.recycler.removeItemDecoration(decoration); binding.recycler.addItemDecoration(decoration = new SpaceItemDecoration(getCount(), 16)); binding.recycler.setLayoutManager(new GridLayoutManager(dialog.getContext(), getCount())); - if (!binding.mode.hasFocus()) binding.recycler.post(() -> binding.recycler.scrollToPosition(VodConfig.getHomeIndex())); + if (!binding.mode.hasFocus()) { + binding.recycler.post(() -> { + binding.recycler.scrollToPosition(VodConfig.getHomeIndex()); + // 清除焦点,避免滚动后自动获得焦点显示黄色背景 + binding.recycler.post(() -> binding.recycler.clearFocus()); + }); + } } private void setDialog() { diff --git a/app/src/leanback/res/color/button_text.xml b/app/src/leanback/res/color/button_text.xml new file mode 100644 index 00000000..b072c564 --- /dev/null +++ b/app/src/leanback/res/color/button_text.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/leanback/res/color/epg.xml b/app/src/leanback/res/color/epg.xml index 311ab299..10c03067 100644 --- a/app/src/leanback/res/color/epg.xml +++ b/app/src/leanback/res/color/epg.xml @@ -1,6 +1,6 @@ - - + + \ No newline at end of file diff --git a/app/src/leanback/res/drawable/shape_bottom_sheet.xml b/app/src/leanback/res/drawable/shape_bottom_sheet.xml index f95f9d32..388a9fbc 100644 --- a/app/src/leanback/res/drawable/shape_bottom_sheet.xml +++ b/app/src/leanback/res/drawable/shape_bottom_sheet.xml @@ -2,7 +2,7 @@ - + - + - + diff --git a/app/src/leanback/res/drawable/shape_text_focused.xml b/app/src/leanback/res/drawable/shape_text_focused.xml index 2f2e5407..87018ce6 100644 --- a/app/src/leanback/res/drawable/shape_text_focused.xml +++ b/app/src/leanback/res/drawable/shape_text_focused.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/leanback/res/drawable/shape_text_normal.xml b/app/src/leanback/res/drawable/shape_text_normal.xml index 28ed9761..af4eaf32 100644 --- a/app/src/leanback/res/drawable/shape_text_normal.xml +++ b/app/src/leanback/res/drawable/shape_text_normal.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/leanback/res/drawable/shape_widget.xml b/app/src/leanback/res/drawable/shape_widget.xml index 78cfa62e..da142db9 100644 --- a/app/src/leanback/res/drawable/shape_widget.xml +++ b/app/src/leanback/res/drawable/shape_widget.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/leanback/res/layout/adapter_config.xml b/app/src/leanback/res/layout/adapter_config.xml index eef0b9a9..c5c1981e 100644 --- a/app/src/leanback/res/layout/adapter_config.xml +++ b/app/src/leanback/res/layout/adapter_config.xml @@ -16,7 +16,7 @@ android:focusableInTouchMode="true" android:gravity="center" android:singleLine="true" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="18sp" tools:text="https://fongmi.github.io/cat.json" /> diff --git a/app/src/leanback/res/layout/adapter_danmaku.xml b/app/src/leanback/res/layout/adapter_danmaku.xml index 3db66936..6e2da0cd 100644 --- a/app/src/leanback/res/layout/adapter_danmaku.xml +++ b/app/src/leanback/res/layout/adapter_danmaku.xml @@ -9,6 +9,6 @@ android:focusable="true" android:focusableInTouchMode="true" android:singleLine="true" - android:textColor="@color/text" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="愛奇異彈幕" /> \ No newline at end of file diff --git a/app/src/leanback/res/layout/adapter_doh.xml b/app/src/leanback/res/layout/adapter_doh.xml index 35faeb7a..f03feca7 100644 --- a/app/src/leanback/res/layout/adapter_doh.xml +++ b/app/src/leanback/res/layout/adapter_doh.xml @@ -9,6 +9,6 @@ android:focusableInTouchMode="true" android:gravity="center" android:singleLine="true" - android:textColor="@color/text" + android:textColor="@color/button_text" android:textSize="18sp" tools:text="Google" /> \ No newline at end of file diff --git a/app/src/leanback/res/layout/adapter_live.xml b/app/src/leanback/res/layout/adapter_live.xml index 99a79f25..c17d66dd 100644 --- a/app/src/leanback/res/layout/adapter_live.xml +++ b/app/src/leanback/res/layout/adapter_live.xml @@ -16,7 +16,7 @@ android:focusableInTouchMode="true" android:gravity="center" android:singleLine="true" - android:textColor="@color/text" + android:textColor="@color/button_text" android:textSize="18sp" tools:text="https://fongmi.github.io/live.json" /> diff --git a/app/src/leanback/res/layout/adapter_parse.xml b/app/src/leanback/res/layout/adapter_parse.xml index c9900081..4ed46132 100644 --- a/app/src/leanback/res/layout/adapter_parse.xml +++ b/app/src/leanback/res/layout/adapter_parse.xml @@ -8,6 +8,6 @@ android:focusable="true" android:focusableInTouchMode="true" android:gravity="center" - android:textColor="@color/text" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="解析" /> \ No newline at end of file diff --git a/app/src/leanback/res/layout/adapter_restore.xml b/app/src/leanback/res/layout/adapter_restore.xml index da423e6c..87844850 100644 --- a/app/src/leanback/res/layout/adapter_restore.xml +++ b/app/src/leanback/res/layout/adapter_restore.xml @@ -16,7 +16,7 @@ android:focusableInTouchMode="true" android:gravity="center" android:singleLine="true" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="18sp" tools:text="tv-2024-12-26.bk.gz" /> diff --git a/app/src/leanback/res/layout/adapter_site.xml b/app/src/leanback/res/layout/adapter_site.xml index 11413619..a189d31b 100644 --- a/app/src/leanback/res/layout/adapter_site.xml +++ b/app/src/leanback/res/layout/adapter_site.xml @@ -17,7 +17,7 @@ android:ellipsize="marquee" android:gravity="center" android:singleLine="true" - android:textColor="@color/text" + android:textColor="@color/button_text" android:textSize="18sp" tools:text="泥巴" /> diff --git a/app/src/leanback/res/layout/adapter_track.xml b/app/src/leanback/res/layout/adapter_track.xml index f709cf40..44b84a88 100644 --- a/app/src/leanback/res/layout/adapter_track.xml +++ b/app/src/leanback/res/layout/adapter_track.xml @@ -9,6 +9,6 @@ android:focusable="true" android:focusableInTouchMode="true" android:singleLine="true" - android:textColor="@color/text" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="中文、哥斯拉.srt" /> \ No newline at end of file diff --git a/app/src/leanback/res/layout/dialog_buffer.xml b/app/src/leanback/res/layout/dialog_buffer.xml index db4c88fc..da5287a9 100644 --- a/app/src/leanback/res/layout/dialog_buffer.xml +++ b/app/src/leanback/res/layout/dialog_buffer.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/black_90" android:padding="48dp"> + app:trackColorActive="@color/primary" + app:trackColorInactive="@color/white_30" /> \ No newline at end of file diff --git a/app/src/leanback/res/layout/dialog_config.xml b/app/src/leanback/res/layout/dialog_config.xml index 2c2e2830..96e6f5f5 100644 --- a/app/src/leanback/res/layout/dialog_config.xml +++ b/app/src/leanback/res/layout/dialog_config.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:background="@color/black_90" android:padding="16dp"> @@ -41,11 +42,13 @@ android:layout_alignStart="@+id/info" android:layout_marginBottom="10dp" android:hint="@string/dialog_config_hint" + android:textColorHint="@color/white_50" android:imeOptions="actionDone" android:importantForAutofill="no" android:inputType="text" android:nextFocusDown="@id/positive" android:singleLine="true" + android:textColor="@color/white" android:textSize="18sp" /> diff --git a/app/src/leanback/res/layout/dialog_danmaku.xml b/app/src/leanback/res/layout/dialog_danmaku.xml index 6a68cbc7..a0b45266 100644 --- a/app/src/leanback/res/layout/dialog_danmaku.xml +++ b/app/src/leanback/res/layout/dialog_danmaku.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/black_90" android:orientation="vertical"> \ No newline at end of file diff --git a/app/src/leanback/res/layout/dialog_doh.xml b/app/src/leanback/res/layout/dialog_doh.xml index a856de7e..9860fd06 100644 --- a/app/src/leanback/res/layout/dialog_doh.xml +++ b/app/src/leanback/res/layout/dialog_doh.xml @@ -5,6 +5,7 @@ android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/black_90" android:padding="16dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:maxHeight="296dp" diff --git a/app/src/leanback/res/layout/dialog_history.xml b/app/src/leanback/res/layout/dialog_history.xml index 29632553..febd407e 100644 --- a/app/src/leanback/res/layout/dialog_history.xml +++ b/app/src/leanback/res/layout/dialog_history.xml @@ -4,6 +4,7 @@ android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/black_90" android:padding="16dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:maxHeight="352dp" /> \ No newline at end of file diff --git a/app/src/leanback/res/layout/dialog_live.xml b/app/src/leanback/res/layout/dialog_live.xml index b2124f51..07027dff 100644 --- a/app/src/leanback/res/layout/dialog_live.xml +++ b/app/src/leanback/res/layout/dialog_live.xml @@ -5,6 +5,7 @@ android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/black_90" android:padding="16dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:maxHeight="296dp" diff --git a/app/src/leanback/res/layout/dialog_pass.xml b/app/src/leanback/res/layout/dialog_pass.xml index 522aa19d..8460cd7b 100644 --- a/app/src/leanback/res/layout/dialog_pass.xml +++ b/app/src/leanback/res/layout/dialog_pass.xml @@ -2,6 +2,7 @@ diff --git a/app/src/leanback/res/layout/dialog_proxy.xml b/app/src/leanback/res/layout/dialog_proxy.xml index a9a0c541..bd6c2cba 100644 --- a/app/src/leanback/res/layout/dialog_proxy.xml +++ b/app/src/leanback/res/layout/dialog_proxy.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:background="@color/black_90" android:padding="16dp"> diff --git a/app/src/leanback/res/layout/dialog_restore.xml b/app/src/leanback/res/layout/dialog_restore.xml index 29632553..febd407e 100644 --- a/app/src/leanback/res/layout/dialog_restore.xml +++ b/app/src/leanback/res/layout/dialog_restore.xml @@ -4,6 +4,7 @@ android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/black_90" android:padding="16dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:maxHeight="352dp" /> \ No newline at end of file diff --git a/app/src/leanback/res/layout/dialog_site.xml b/app/src/leanback/res/layout/dialog_site.xml index 74cf92c7..77614961 100644 --- a/app/src/leanback/res/layout/dialog_site.xml +++ b/app/src/leanback/res/layout/dialog_site.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/black_90" android:orientation="horizontal" android:padding="16dp"> diff --git a/app/src/leanback/res/layout/dialog_speed.xml b/app/src/leanback/res/layout/dialog_speed.xml index 15a49a75..51b9c2d3 100644 --- a/app/src/leanback/res/layout/dialog_speed.xml +++ b/app/src/leanback/res/layout/dialog_speed.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/black_90" android:padding="48dp"> + app:trackColorActive="@color/primary" + app:trackColorInactive="@color/white_30" /> \ No newline at end of file diff --git a/app/src/leanback/res/layout/dialog_subtitle.xml b/app/src/leanback/res/layout/dialog_subtitle.xml index fa01a014..8831e53f 100644 --- a/app/src/leanback/res/layout/dialog_subtitle.xml +++ b/app/src/leanback/res/layout/dialog_subtitle.xml @@ -2,6 +2,7 @@ diff --git a/app/src/leanback/res/layout/dialog_track.xml b/app/src/leanback/res/layout/dialog_track.xml index 9b351dd0..3b16e985 100644 --- a/app/src/leanback/res/layout/dialog_track.xml +++ b/app/src/leanback/res/layout/dialog_track.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/black_90" android:orientation="vertical"> diff --git a/app/src/leanback/res/layout/dialog_ua.xml b/app/src/leanback/res/layout/dialog_ua.xml index 018a366b..d1fedaa4 100644 --- a/app/src/leanback/res/layout/dialog_ua.xml +++ b/app/src/leanback/res/layout/dialog_ua.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:background="@color/black_90" android:padding="16dp"> diff --git a/app/src/leanback/res/layout/dialog_update.xml b/app/src/leanback/res/layout/dialog_update.xml index 64c995b4..dc162b21 100644 --- a/app/src/leanback/res/layout/dialog_update.xml +++ b/app/src/leanback/res/layout/dialog_update.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/black_90" android:orientation="vertical" android:padding="24dp"> @@ -11,7 +12,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:letterSpacing="0.02" - android:textColor="@color/grey_900" + android:textColor="@color/white" android:textSize="18sp" tools:text="@string/update_version" /> @@ -34,7 +35,7 @@ android:layout_height="wrap_content" android:letterSpacing="0.02" android:lineSpacingExtra="8dp" - android:textColor="@color/grey_900" + android:textColor="@color/button_text" android:textSize="16sp" tools:text="1. 新增 ffmpeg 音頻軟解\n2. 詳情頁新增分詞快搜\n3. 修復搜尋閃退問題\n4. 設定支援渲染切換" /> @@ -56,7 +57,7 @@ android:focusableInTouchMode="true" android:gravity="center" android:text="@string/update_confirm" - android:textColor="@color/white" /> + android:textColor="@color/button_text" /> + android:textColor="@color/button_text" /> \ No newline at end of file diff --git a/app/src/leanback/res/layout/view_control_cast.xml b/app/src/leanback/res/layout/view_control_cast.xml index d30325f7..8fc031db 100644 --- a/app/src/leanback/res/layout/view_control_cast.xml +++ b/app/src/leanback/res/layout/view_control_cast.xml @@ -34,7 +34,7 @@ android:focusableInTouchMode="true" android:nextFocusLeft="@id/video" android:nextFocusDown="@id/timeBar" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="刷新" /> @@ -48,7 +48,7 @@ android:focusableInTouchMode="true" android:nextFocusDown="@id/timeBar" android:text="@string/play_exo" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" /> @@ -73,7 +73,7 @@ android:focusable="true" android:focusableInTouchMode="true" android:nextFocusDown="@id/timeBar" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="1.00" /> @@ -86,7 +86,7 @@ android:focusable="true" android:focusableInTouchMode="true" android:nextFocusDown="@id/timeBar" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="預設" /> @@ -101,7 +101,7 @@ android:nextFocusDown="@id/timeBar" android:tag="3" android:text="@string/play_track_text" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:visibility="visible" /> @@ -117,7 +117,7 @@ android:nextFocusDown="@id/timeBar" android:tag="1" android:text="@string/play_track_audio" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:visibility="visible" /> @@ -134,7 +134,7 @@ android:nextFocusDown="@id/timeBar" android:tag="2" android:text="@string/play_track_video" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:visibility="visible" /> diff --git a/app/src/leanback/res/layout/view_control_live.xml b/app/src/leanback/res/layout/view_control_live.xml index 3d02b328..d7e833ab 100644 --- a/app/src/leanback/res/layout/view_control_live.xml +++ b/app/src/leanback/res/layout/view_control_live.xml @@ -26,7 +26,7 @@ android:focusable="true" android:focusableInTouchMode="true" android:nextFocusLeft="@id/change" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="首頁" /> @@ -39,7 +39,7 @@ android:focusable="true" android:focusableInTouchMode="true" android:text="@string/play" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" /> @@ -74,7 +74,7 @@ android:background="@drawable/selector_text" android:focusable="true" android:focusableInTouchMode="true" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:text="1.00" @@ -88,7 +88,7 @@ android:background="@drawable/selector_text" android:focusable="true" android:focusableInTouchMode="true" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="預設" /> @@ -100,7 +100,7 @@ android:background="@drawable/selector_text" android:focusable="true" android:focusableInTouchMode="true" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:text="來源 1" @@ -116,7 +116,7 @@ android:focusableInTouchMode="true" android:tag="3" android:text="@string/play_track_text" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:visibility="visible" /> @@ -131,7 +131,7 @@ android:focusableInTouchMode="true" android:tag="1" android:text="@string/play_track_audio" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:visibility="visible" /> @@ -146,7 +146,7 @@ android:focusableInTouchMode="true" android:tag="2" android:text="@string/play_track_video" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:visibility="visible" /> diff --git a/app/src/leanback/res/layout/view_control_vod.xml b/app/src/leanback/res/layout/view_control_vod.xml index f52b6923..f03cd81c 100644 --- a/app/src/leanback/res/layout/view_control_vod.xml +++ b/app/src/leanback/res/layout/view_control_vod.xml @@ -45,7 +45,7 @@ android:nextFocusLeft="@id/loop" android:nextFocusDown="@id/timeBar" android:text="@string/play_next" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" /> @@ -84,7 +84,7 @@ android:focusableInTouchMode="true" android:nextFocusDown="@id/timeBar" android:text="@string/play_change" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="換源" /> @@ -98,7 +98,7 @@ android:focusableInTouchMode="true" android:nextFocusDown="@id/timeBar" android:text="@string/play_exo" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" /> @@ -123,7 +123,7 @@ android:focusable="true" android:focusableInTouchMode="true" android:nextFocusDown="@id/timeBar" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="1.00" /> @@ -136,7 +136,7 @@ android:focusable="true" android:focusableInTouchMode="true" android:nextFocusDown="@id/timeBar" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="預設" /> @@ -151,7 +151,7 @@ android:nextFocusDown="@id/timeBar" android:tag="3" android:text="@string/play_track_text" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:visibility="visible" /> @@ -167,7 +167,7 @@ android:nextFocusDown="@id/timeBar" android:tag="1" android:text="@string/play_track_audio" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:visibility="visible" /> @@ -183,7 +183,7 @@ android:nextFocusDown="@id/timeBar" android:tag="2" android:text="@string/play_track_video" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" android:visibility="gone" tools:visibility="visible" /> @@ -197,7 +197,7 @@ android:focusable="true" android:focusableInTouchMode="true" android:nextFocusDown="@id/timeBar" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="00:00" /> @@ -210,7 +210,7 @@ android:focusable="true" android:focusableInTouchMode="true" android:nextFocusDown="@id/timeBar" - android:textColor="@color/white" + android:textColor="@color/button_text" android:textSize="14sp" tools:text="00:00" /> diff --git a/app/src/leanback/res/values/colors.xml b/app/src/leanback/res/values/colors.xml index e41a4d77..25321989 100644 --- a/app/src/leanback/res/values/colors.xml +++ b/app/src/leanback/res/values/colors.xml @@ -1,7 +1,44 @@ - @color/black - @color/black - @color/blue_500 + #FFEB3B + #FDD835 + #FFEB3B + #2196F3 + #66BB6A + #757575 + + + #0D000000 + #33000000 + #4D000000 + #66000000 + #80000000 + #99000000 + #CC000000 + #E6000000 + + + #FFFFFF + #33FFFFFF + #4DFFFFFF + #80FFFFFF + + + #000000 + + + #E0E0E0 + #9E9E9E + #616161 + #212121 + + + #FFFFFF + + + #00E676 + + + #00000000 \ No newline at end of file diff --git a/app/src/leanback/res/values/styles.xml b/app/src/leanback/res/values/styles.xml index d8c4bd8f..5b991e4c 100644 --- a/app/src/leanback/res/values/styles.xml +++ b/app/src/leanback/res/values/styles.xml @@ -25,7 +25,7 @@ 24dp -