Add card darkness adjustment function

- Updated some string translations
This commit is contained in:
ShirkNeko
2025-05-14 19:55:11 +08:00
parent b3b7fa6f4d
commit 4d59ce435e
7 changed files with 155 additions and 29 deletions

View File

@@ -40,6 +40,7 @@ import androidx.compose.material.icons.filled.DarkMode
import androidx.compose.material.icons.filled.KeyboardArrowDown
import androidx.compose.material.icons.filled.KeyboardArrowUp
import androidx.compose.material.icons.filled.Language
import androidx.compose.material.icons.filled.LightMode
import androidx.compose.material.icons.filled.Opacity
import androidx.compose.material.icons.filled.Palette
import androidx.compose.material.icons.filled.Security
@@ -345,6 +346,7 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
// 卡片配置状态
var cardAlpha by rememberSaveable { mutableFloatStateOf(CardConfig.cardAlpha) }
var cardDim by rememberSaveable { mutableFloatStateOf(CardConfig.cardDim) }
var isCustomBackgroundEnabled by rememberSaveable {
mutableStateOf(ThemeConfig.customBackgroundUri != null)
}
@@ -393,6 +395,7 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
// 加载设置
CardConfig.load(context)
cardAlpha = CardConfig.cardAlpha
cardDim = CardConfig.cardDim
isCustomBackgroundEnabled = ThemeConfig.customBackgroundUri != null
// 设置主题模式
@@ -699,10 +702,13 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
isCustomBackgroundEnabled = false
CardConfig.cardElevation
CardConfig.cardAlpha = 1f
CardConfig.cardDim = 0f
CardConfig.isCustomAlphaSet = false
CardConfig.isCustomDimSet = false
CardConfig.isCustomBackgroundEnabled = false
saveCardConfig(context)
cardAlpha = 1f
cardDim = 0f
// 重置其他相关设置
ThemeConfig.needsResetOnThemeChange = true
@@ -730,7 +736,7 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
)
)
// 透明度 Slider
// 透明度和亮度调节滑动条
AnimatedVisibility(
visible = ThemeConfig.customBackgroundUri != null,
enter = fadeIn() + expandVertically(),
@@ -738,6 +744,7 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
modifier = Modifier.padding(horizontal = 32.dp)
) {
Column(modifier = Modifier.padding(vertical = 8.dp)) {
// 透明度滑动条
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(bottom = 4.dp)
@@ -785,6 +792,55 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
inactiveTrackColor = MaterialTheme.colorScheme.surfaceVariant
)
)
// 亮度调节滑动条
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(top = 16.dp, bottom = 4.dp)
) {
Icon(
Icons.Filled.LightMode,
contentDescription = null,
modifier = Modifier.size(20.dp),
tint = MaterialTheme.colorScheme.primary
)
Spacer(modifier = Modifier.width(8.dp))
Text(
text = stringResource(R.string.settings_card_dim),
style = MaterialTheme.typography.titleSmall
)
Spacer(modifier = Modifier.weight(1f))
Text(
text = "${(cardDim * 100).roundToInt()}%",
style = MaterialTheme.typography.labelMedium,
color = MaterialTheme.colorScheme.onSurfaceVariant
)
}
Slider(
value = cardDim,
onValueChange = { newValue ->
cardDim = newValue
CardConfig.cardDim = newValue
CardConfig.isCustomDimSet = true
prefs.edit {
putBoolean("is_custom_dim_set", true)
putFloat("card_dim", newValue)
}
},
onValueChangeFinished = {
coroutineScope.launch(Dispatchers.IO) {
saveCardConfig(context)
}
},
valueRange = 0f..1f,
steps = 20,
colors = SliderDefaults.colors(
thumbColor = MaterialTheme.colorScheme.primary,
activeTrackColor = MaterialTheme.colorScheme.primary,
inactiveTrackColor = MaterialTheme.colorScheme.surfaceVariant
)
)
}
}
}
@@ -1144,6 +1200,9 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
if (!CardConfig.isCustomAlphaSet) {
CardConfig.cardAlpha = 1f
}
if (!CardConfig.isCustomDimSet) {
CardConfig.cardDim = 0.5f
}
CardConfig.save(context)
}
1 -> { // 浅色
@@ -1153,6 +1212,9 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) {
if (!CardConfig.isCustomAlphaSet) {
CardConfig.cardAlpha = 1f
}
if (!CardConfig.isCustomDimSet) {
CardConfig.cardDim = 0f
}
CardConfig.save(context)
}
0 -> { // 跟随系统

View File

@@ -5,6 +5,7 @@ import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.CardDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.graphics.Color
@@ -16,10 +17,15 @@ object CardConfig {
val settingElevation: Dp = 4.dp
val customBackgroundElevation: Dp = 0.dp
var cardAlpha by mutableStateOf(1f)
// 卡片透明度
var cardAlpha by mutableFloatStateOf(1f)
// 卡片亮度
var cardDim by mutableFloatStateOf(0f)
// 卡片阴影
var cardElevation by mutableStateOf(settingElevation)
var isShadowEnabled by mutableStateOf(true)
var isCustomAlphaSet by mutableStateOf(false)
var isCustomDimSet by mutableStateOf(false)
var isUserDarkModeEnabled by mutableStateOf(false)
var isUserLightModeEnabled by mutableStateOf(false)
var isCustomBackgroundEnabled by mutableStateOf(false)
@@ -31,9 +37,11 @@ object CardConfig {
val prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE)
prefs.edit().apply {
putFloat("card_alpha", cardAlpha)
putFloat("card_dim", cardDim)
putBoolean("custom_background_enabled", isCustomBackgroundEnabled)
putBoolean("is_shadow_enabled", isShadowEnabled)
putBoolean("is_custom_alpha_set", isCustomAlphaSet)
putBoolean("is_custom_dim_set", isCustomDimSet)
putBoolean("is_user_dark_mode_enabled", isUserDarkModeEnabled)
putBoolean("is_user_light_mode_enabled", isUserLightModeEnabled)
apply()
@@ -46,9 +54,11 @@ object CardConfig {
fun load(context: Context) {
val prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE)
cardAlpha = prefs.getFloat("card_alpha", 1f)
cardDim = prefs.getFloat("card_dim", 0f)
isCustomBackgroundEnabled = prefs.getBoolean("custom_background_enabled", false)
isShadowEnabled = prefs.getBoolean("is_shadow_enabled", true)
isCustomAlphaSet = prefs.getBoolean("is_custom_alpha_set", false)
isCustomDimSet = prefs.getBoolean("is_custom_dim_set", false)
isUserDarkModeEnabled = prefs.getBoolean("is_user_dark_mode_enabled", false)
isUserLightModeEnabled = prefs.getBoolean("is_user_light_mode_enabled", false)
updateShadowEnabled(isShadowEnabled)
@@ -72,9 +82,25 @@ object CardConfig {
* 设置深色模式默认值
*/
fun setDarkModeDefaults() {
if (!isCustomAlphaSet) {
cardAlpha = 0.70f
}
if (!isCustomDimSet) {
cardDim = 0.5f
}
updateShadowEnabled(isShadowEnabled)
}
/**
* 设置浅色模式默认值
*/
fun setLightModeDefaults() {
if (!isCustomAlphaSet) {
cardAlpha = 1f
}
if (!isCustomDimSet) {
cardDim = 0f
}
updateShadowEnabled(isShadowEnabled)
}
}

View File

@@ -110,6 +110,9 @@ fun KernelSUTheme(
if (!isCustomAlphaSet) {
cardAlpha = if (systemIsDark) 0.50f else 1f
}
if (!isCustomDimSet) {
cardDim = if (systemIsDark) 0.5f else 0f
}
save(context)
}
}
@@ -148,6 +151,8 @@ fun KernelSUTheme(
val isDarkModeWithCustomBackground = darkTheme && ThemeConfig.customBackgroundUri != null
if (darkTheme && !dynamicColor) {
CardConfig.setDarkModeDefaults()
} else if (!darkTheme && !dynamicColor) {
CardConfig.setLightModeDefaults()
}
CardConfig.updateShadowEnabled(!isDarkModeWithCustomBackground)
@@ -199,6 +204,9 @@ fun KernelSUTheme(
}
}
// 计算适用的暗化值
val dimFactor = CardConfig.cardDim
MaterialTheme(
colorScheme = colorScheme,
typography = Typography
@@ -234,13 +242,13 @@ fun KernelSUTheme(
)
}
// 亮度调节层
// 亮度调节层 (根据cardDim调整)
Box(
modifier = Modifier
.fillMaxSize()
.background(
if (darkTheme) Color.Black.copy(alpha = 0.6f)
else Color.White.copy(alpha = 0.1f)
if (darkTheme) Color.Black.copy(alpha = 0.6f + dimFactor * 0.3f)
else Color.White.copy(alpha = 0.1f + dimFactor * 0.2f)
)
)
@@ -252,8 +260,8 @@ fun KernelSUTheme(
Brush.radialGradient(
colors = listOf(
Color.Transparent,
if (darkTheme) Color.Black.copy(alpha = 0.5f)
else Color.Black.copy(alpha = 0.2f)
if (darkTheme) Color.Black.copy(alpha = 0.5f + dimFactor * 0.2f)
else Color.Black.copy(alpha = 0.2f + dimFactor * 0.1f)
),
radius = 1200f
)

View File

@@ -305,23 +305,50 @@
<string name="app_settings">アプリの設定</string>
<string name="tools">ツール</string>
<string name="currently_selected">現在</string>
<!-- String resources used in SuperUser -->
<string name="clear">削除</string>
<string name="apps_with_root">root アプリの権限</string>
<string name="apps_with_custom_profile">カスタマイズされたアプリ構成</string>
<!-- SuperUser 里用到的字符串资源 -->
<string name="clear">クリア</string>
<string name="apps_with_root">ルートアクセスの許可</string>
<string name="apps_with_custom_profile">カスタムアプリの設定</string>
<string name="other_apps">その他のアプリ</string>
<string name="no_apps_found">アプリがりません</string>
<string name="selinux_enabled_toast">SELinux 有効</string>
<string name="selinux_disabled_toast">SELinux 無効</string>
<string name="selinux_change_failed">SELinux ステータスの変更に失敗しました</string>
<string name="advanced_settings">高度な設定</string>
<string name="appearance_settings">ツールバーをカスタマイズ</string>
<string name="no_apps_found">アプリが見つかりません</string>
<string name="selinux_enabled_toast">SELinux 有効にするステータスを設定します</string>
<string name="selinux_disabled_toast">SELinux は Permissive に設定されています</string>
<string name="selinux_change_failed">SELinux 状態の変更に失敗しました</string>
<string name="advanced_settings">詳細設定</string>
<string name="appearance_settings">外観設定</string>
<string name="back">戻る</string>
<string name="expand">最高の状態</string>
<string name="collapse">設置</string>
<string name="expand">表示する</string>
<string name="collapse">收起</string>
<string name="susfs_enabled">SuSFS 有効</string>
<string name="susfs_disabled">SuSFS 無効</string>
<string name="background_set_success">背景の設定が成功しました</string>
<string name="background_removed">カスタム背景を削除しました</string>
<string name="root_require_for_install">root 権限が必要</string>
<string name="background_set_success">設定は正常に更新されました</string>
<string name="background_removed">カスタム背景を削除しています</string>
<string name="root_require_for_install">Root権限が必要です</string>
<!-- KPM 显示设置相关 -->
<string name="show_kpm_info">KPMを表示</string>
<string name="show_kpm_info_summary">ホーム画面と底バーで KPM に関する情報を表示します(アプリを再度開く必要があります)</string>
<!-- Webui X 设置相关 -->
<string name="use_webuix">WebUI X を使用</string>
<string name="use_webuix_summary">WebUIではなく、より API をサポートする Web UI X</string>
<string name="use_webuix_eruda">Eruda に Web UI X を注入</string>
<string name="use_webuix_eruda_summary">WebUI Xでデバッグコンソールの注入ができます。デバッグが簡単になりやすいように、WebView のデバッグを有効にする必要があります</string>
<!-- DPI设置相关字符串 -->
<string name="dpi_settings">DPI 設定</string>
<string name="app_dpi_title">DPI を使用</string>
<string name="app_dpi_summary">画面密度を現在のアプリの画面解像度に合わせる</string>
<string name="dpi_size_small"></string>
<string name="dpi_size_medium"></string>
<string name="dpi_size_large">大きく</string>
<string name="dpi_size_extra_large">特大</string>
<string name="dpi_size_custom">カスタム</string>
<string name="dpi_apply_settings">DPI 設定のセットアップ</string>
<string name="dpi_confirm_title">画素密度を変更確認</string>
<string name="dpi_confirm_message">DPI を %1$d から %2$d に変更してもよろしいですか?</string>
<string name="dpi_confirm_summary">アプリの再起動が必要です DPIの設定はシステムステータスバーや他のアプリには影響しません</string>
<string name="dpi_applied_success">DPI は %1$dに設定され、アプリを再起動後に適用されます</string>
<!-- 语言设置相关字符串 -->
<string name="language_setting">アプリの言語</string>
<string name="language_follow_system">システムに従う</string>
<string name="language_changed">変更を適用するには言語の再起動が必要です</string>
<string name="settings_card_dim">暗さされたカード(暗い部分)</string>
</resources>

View File

@@ -36,11 +36,11 @@
<string name="settings">Cài đặt</string>
<string name="reboot_userspace">Khởi động lại không gian người dùng</string>
<string name="reboot_recovery">Khởi động lại vào Recovery</string>
<string name="reboot_bootloader">hởi động lại vào Bootloader</string>
<string name="reboot_bootloader">Khởi động lại vào Bootloader</string>
<string name="reboot_download">Khởi động lại vào Download Mode</string>
<string name="reboot_edl">Khởi động lại vào EDL</string>
<string name="about">Thông tin</string>
<string name="module_uninstall_confirm">Bạn có THẬT SỰ muốn gỡ module %s?</string>
<string name="module_uninstall_confirm">Bạn có THẬT SỰ muốn gỡ cài đặt module %s không?</string>
<string name="module_uninstall_success">%s đã được gỡ cài đặt</string>
<string name="module_uninstall_failed">Gỡ cài đặt thất bại: %s</string>
<string name="module_version">Phiên bản</string>
@@ -58,7 +58,7 @@
<string name="home_support_title">Hỗ trợ chúng tôi</string>
<string name="home_support_content">KernelSU sẽ luôn là miễn phí và mã nguồn mở. Tuy nhiên, bạn có thể cho chúng tôi thấy rằng bạn quan tâm bằng cách quyên góp.</string>
<string name="about_source_code"><![CDATA[Xem mã nguồn tại %1$s<br/>Tham gia kênh %2$s của chúng tôi]]></string>
<string name="profile" translatable="false">App Profile</string>
<string name="profile" translatable="false">Hồ sơ ứng dụng</string>
<string name="profile_default">Mặc định</string>
<string name="profile_template">Bản mẫu</string>
<string name="profile_custom">Tuỳ chỉnh</string>
@@ -139,7 +139,7 @@
<string name="log_saved">Logs đã được lưu</string>
<string name="status_supported">Được hỗ trợ</string>
<string name="status_not_supported">Không được hỗ trợ</string>
<string name="status_unknown">Unknown</string>
<string name="status_unknown">Không rõ</string>
<string name="sus_su_mode">Chế độ SU của SuS:</string>
<!-- Module related -->
<string name="module_install_confirm">Xác nhận cài đặt Module %1$s</string>
@@ -180,7 +180,7 @@
<string name="settings_disable_su">Vô hiệu hoá khả năng của lệnh SU</string>
<string name="settings_disable_su_summary">Vô hiệu hoá khả năng thực thi lệnh SU để lấy quyền root (những app đã cấp trước đó không bị ảnh hưởng).</string>
<string name="using_mksu_manager">Bạn đang sử dụng trình quản lý SukiSU Beta</string>
<string name="module_install_multiple_confirm">Bạn có chắc muốn cài đặt các Module %d đã chọn không??</string>
<string name="module_install_multiple_confirm">Bạn có chắc muốn cài đặt các Module %d đã chọn không?</string>
<string name="module_install_multiple_confirm_with_names">Bạn có chắc muốn cài đặt các module %1$d sau không? \n\n%2$s</string>
<string name="more_settings">Nhiều thiết lập hơn</string>
<string name="selinux">SELinux</string>
@@ -247,7 +247,7 @@
<string name="home_click_to_ContributionCard_kernelsu">SukiSU Ultra sẽ là một nhánh tương đối độc lập của KSU trong tương lai, nhưng chúng tôi xin cảm ơn KernelSU và MKSU,... vì những đóng góp của họ!</string>
<string name="not_supported">Không được hỗ trợ</string>
<string name="supported">Được hỗ trợ</string>
<string name="home_kpm_module">"Module KPM: %d "</string>
<string name="home_kpm_module">Module KPM: %d</string>
<string name="kpm_invalid_file">Tệp KPM không hợp lệ</string>
<string name="kernel_patched">Kernel chưa được vá</string>
<string name="kernel_not_enabled">Kernel chưa được cấu hình</string>
@@ -350,4 +350,5 @@
<string name="language_setting">Ngôn ngữ ứng dụng</string>
<string name="language_follow_system">Theo dõi hệ thống</string>
<string name="language_changed">Ngôn ngữ đã thay đổi, khởi động lại để áp dụng thay đổi</string>
<string name="settings_card_dim">Điều chỉnh độ tối của thẻ</string>
</resources>

View File

@@ -346,4 +346,5 @@
<string name="language_setting">应用语言</string>
<string name="language_follow_system">跟随系统</string>
<string name="language_changed">语言已更改,重启应用以应用更改</string>
<string name="settings_card_dim">卡片暗度调节</string>
</resources>

View File

@@ -350,4 +350,5 @@
<string name="language_setting">App Language</string>
<string name="language_follow_system">Follow System</string>
<string name="language_changed">Language changed, restarting to apply changes</string>
<string name="settings_card_dim">Card Darkness Adjustment</string>
</resources>