diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/MainActivity.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/MainActivity.kt index 49e19b81..1e4ec582 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/MainActivity.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/MainActivity.kt @@ -102,24 +102,11 @@ class MainActivity : ComponentActivity() { modifier = Modifier.padding(innerPadding), navGraph = NavGraphs.root as NavHostGraphSpec, navController = navController, - defaultTransitions = remember { - object : NavHostAnimatedDestinationStyle() { - override val enterTransition: AnimatedContentTransitionScope.() -> EnterTransition = { - fadeIn(animationSpec = tween(300)) + - slideIntoContainer( - towards = AnimatedContentTransitionScope.SlideDirection.Up, - animationSpec = tween(300) - ) - } - - override val exitTransition: AnimatedContentTransitionScope.() -> ExitTransition = { - fadeOut(animationSpec = tween(300)) + - slideOutOfContainer( - towards = AnimatedContentTransitionScope.SlideDirection.Down, - animationSpec = tween(300) - ) - } - } + defaultTransitions = object : NavHostAnimatedDestinationStyle() { + override val enterTransition: AnimatedContentTransitionScope.() -> EnterTransition + get() = { fadeIn(animationSpec = tween(340)) } + override val exitTransition: AnimatedContentTransitionScope.() -> ExitTransition + get() = { fadeOut(animationSpec = tween(340)) } } ) } diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/AppProfile.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/AppProfile.kt index aeaaddb5..37c2c360 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/AppProfile.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/AppProfile.kt @@ -372,8 +372,6 @@ private fun AppMenuBox(packageName: String, content: @Composable () -> Unit) { ) } } - - } @Preview diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt index 39e50987..53d234e1 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt @@ -132,6 +132,7 @@ fun HomeScreen(navigator: DestinationsNavigator) { var isHideVersion by rememberSaveable { mutableStateOf(false) } var isHideOtherInfo by rememberSaveable { mutableStateOf(false) } var isHideSusfsStatus by rememberSaveable { mutableStateOf(false) } + var isHideLinkCard by rememberSaveable { mutableStateOf(false) } // 从 SharedPreferences 加载简洁模式状态 LaunchedEffect(Unit) { @@ -146,10 +147,13 @@ fun HomeScreen(navigator: DestinationsNavigator) { isHideSusfsStatus = context.getSharedPreferences("settings", Context.MODE_PRIVATE) .getBoolean("is_hide_susfs_status", false) + + isHideLinkCard = context.getSharedPreferences("settings", Context.MODE_PRIVATE) + .getBoolean("is_hide_link_card", false) } val kernelVersion = getKernelVersion() - val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(rememberTopAppBarState()) + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) val isManager = Natives.becomeManager(ksuApp.packageName) val deviceModel = getDeviceModel() @@ -279,16 +283,16 @@ fun HomeScreen(navigator: DestinationsNavigator) { InfoCard() if (!isSimpleMode) { - ContributionCard() - DonateCard() - LearnMoreCard() + if (!isHideLinkCard) { + ContributionCard() + DonateCard() + LearnMoreCard() + } } - Spacer(Modifier.height(16.dp)) } } - // 防抖逻辑 LaunchedEffect(scrollState) { snapshotFlow { scrollState.isScrollInProgress } .debounce(debounceTime) @@ -297,7 +301,6 @@ fun HomeScreen(navigator: DestinationsNavigator) { val currentTime = System.currentTimeMillis() if (currentTime - lastScrollTime > debounceTime) { lastScrollTime = currentTime - // 在这里可以添加滚动时的逻辑 } } } @@ -387,7 +390,7 @@ private fun TopBar( }, colors = TopAppBarDefaults.topAppBarColors( containerColor = cardColor.copy(alpha = cardAlpha), - scrolledContainerColor = cardColor.copy(alpha = 1f) + scrolledContainerColor = cardColor.copy(alpha = cardAlpha) ), actions = { if (kernelVersion.isGKI()) { diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Kpm.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Kpm.kt index 9d230f65..a23451c1 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Kpm.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Kpm.kt @@ -66,7 +66,7 @@ fun KpmScreen( module.id to stringResource(R.string.confirm_uninstall_content, moduleFileName) } - val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(rememberTopAppBarState()) + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) val kpmInstallSuccess = stringResource(R.string.kpm_install_success) val kpmInstallFailed = stringResource(R.string.kpm_install_failed) diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Module.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Module.kt index dc91565f..e5d553a8 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Module.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Module.kt @@ -211,7 +211,7 @@ fun ModuleScreen(navigator: DestinationsNavigator) { val hideInstallButton = isSafeMode || hasMagisk - val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(rememberTopAppBarState()) + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) val webUILauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.StartActivityForResult() diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/MoreSettings.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/MoreSettings.kt index c5911945..fbc840a3 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/MoreSettings.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/MoreSettings.kt @@ -186,6 +186,16 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) { isHideSusfsStatus = newValue } + // 隐藏链接状态开关状态 + var isHideLinkCard by remember { + mutableStateOf(prefs.getBoolean("is_hide_link_card", false)) + } + + val onHideLinkCardChange = { newValue: Boolean -> + prefs.edit { putBoolean("is_hide_link_card", newValue) } + isHideLinkCard = newValue + } + // SELinux状态 var selinuxEnabled by remember { mutableStateOf(Shell.cmd("getenforce").exec().out.firstOrNull() == "Enforcing") @@ -618,6 +628,21 @@ fun MoreSettingsScreen(navigator: DestinationsNavigator) { ) { onHideSusfsStatusChange(it) } + + HorizontalDivider( + modifier = Modifier.padding(horizontal = 16.dp), + color = MaterialTheme.colorScheme.outlineVariant + ) + + // 隐藏链接信息 + SwitchItem( + icon = Icons.Filled.VisibilityOff, + title = stringResource(R.string.hide_link_card), + summary = stringResource(R.string.hide_link_card_summary), + checked = isHideLinkCard + ) { + onHideLinkCardChange(it) + } } } } diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt index 58bc2348..61f01dd0 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Settings.kt @@ -6,8 +6,6 @@ import android.net.Uri import android.widget.Toast import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts -import androidx.compose.animation.* -import androidx.compose.animation.core.* import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.isSystemInDarkTheme @@ -64,7 +62,7 @@ import java.time.format.DateTimeFormatter @Destination @Composable fun SettingScreen(navigator: DestinationsNavigator) { - val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(rememberTopAppBarState()) + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) val snackBarHost = LocalSnackbarHost.current val ksuIsValid = Natives.isKsuValid(ksuApp.packageName) diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/SuperUser.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/SuperUser.kt index 6de25361..4bea9df0 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/SuperUser.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/SuperUser.kt @@ -49,7 +49,7 @@ import com.sukisu.ultra.ui.viewmodel.SuperUserViewModel fun SuperUserScreen(navigator: DestinationsNavigator) { val viewModel = viewModel() val scope = rememberCoroutineScope() - val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(rememberTopAppBarState()) + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) val listState = rememberLazyListState() val context = LocalContext.current val snackBarHostState = remember { SnackbarHostState() } diff --git a/manager/app/src/main/res/values-ja/strings.xml b/manager/app/src/main/res/values-ja/strings.xml index 01ba62b0..b8c2d2be 100644 --- a/manager/app/src/main/res/values-ja/strings.xml +++ b/manager/app/src/main/res/values-ja/strings.xml @@ -194,6 +194,8 @@ ホームページ上のスーパーユーザー、モジュール、KPM モジュールの数に関する情報を非表示にします SuSFS ステータスを非表示にする ホームページ上の SuSFS ステータス情報を非表示にします + リンクカードのステータスを隠す + ホームページのリンクカード情報を隠す テーマ システムに従う ライト diff --git a/manager/app/src/main/res/values-zh-rCN/strings.xml b/manager/app/src/main/res/values-zh-rCN/strings.xml index 7c3e5e87..6e695bc1 100644 --- a/manager/app/src/main/res/values-zh-rCN/strings.xml +++ b/manager/app/src/main/res/values-zh-rCN/strings.xml @@ -194,6 +194,8 @@ 隐藏主页上的超级用户数、模块数和 KPM 模块数信息 隐藏 SuSFS 状态信息 隐藏主页上的 SuSFS 状态信息 + 隐藏链接卡片 + 隐藏主页上的链接卡片信息 主题模式 跟随系统 浅色 diff --git a/manager/app/src/main/res/values/strings.xml b/manager/app/src/main/res/values/strings.xml index ab8aeb9d..c4db7c83 100644 --- a/manager/app/src/main/res/values/strings.xml +++ b/manager/app/src/main/res/values/strings.xml @@ -194,6 +194,8 @@ Hides information about the number of super users, modules and KPM modules on the home page Hide SuSFS status Hide SuSFS status information on the home page + Hide Link Card Status + Hide link card information on the home page Theme Follow system Light