41 Commits

Author SHA1 Message Date
乌堆小透明
4225d64ae3 New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin
2023-04-08 19:44:36 +08:00
乌堆小透明
a484a3ba04 New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin
2023-02-20 23:55:08 +08:00
乌堆小透明
1429bcd392 New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2023-02-20 23:55:07 +08:00
乌堆小透明
a4eb720b61 New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2023-02-20 22:46:46 +08:00
乌堆小透明
1e78221408 New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2023-02-20 22:46:43 +08:00
乌堆小透明
07ecd3adb8 New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin
2023-02-20 22:46:41 +08:00
乌堆小透明
86da593cff New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin
2023-02-20 21:32:14 +08:00
乌堆小透明
236e545706 New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2023-02-20 21:32:12 +08:00
乌堆小透明
dc76d99fc6 New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2023-02-20 21:32:08 +08:00
乌堆小透明
20585c66ea New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin
2023-02-20 21:28:33 +08:00
乌堆小透明
8cbf9d2072 New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2023-02-20 21:28:27 +08:00
乌堆小透明
a5ba41260a New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2023-02-19 11:43:16 +08:00
乌堆小透明
cbdf331035 New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2023-02-19 09:11:59 +08:00
乌堆小透明
357c30bc3a New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin
2023-02-19 08:15:33 +08:00
乌堆小透明
138c653a82 New translations strings.xml (Polish)
[ci skip] New translations from Crowdin
2023-02-19 06:56:34 +08:00
乌堆小透明
587141ca82 New translations strings.xml (Polish)
[ci skip] New translations from Crowdin
2023-02-19 05:52:59 +08:00
乌堆小透明
73d5e9855f New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2023-02-19 02:20:48 +08:00
乌堆小透明
0eeff2646b New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin
2023-02-18 23:46:49 +08:00
乌堆小透明
2b5f903006 New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin
2023-02-18 23:46:49 +08:00
乌堆小透明
8cba53fa3f New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2023-02-18 23:46:47 +08:00
乌堆小透明
cea867374c New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2023-02-18 23:46:45 +08:00
乌堆小透明
a5c39da799 New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2023-02-18 23:46:39 +08:00
乌堆小透明
870a742a0f New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin
2023-02-18 22:32:20 +08:00
乌堆小透明
367663df77 New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin
2023-02-18 22:32:19 +08:00
乌堆小透明
ea64b57d6a New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin
2023-02-18 22:32:18 +08:00
乌堆小透明
4bde2ccfdc New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin
2023-02-18 22:32:17 +08:00
乌堆小透明
772b019631 New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2023-02-18 22:32:16 +08:00
乌堆小透明
168ab492eb New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2023-02-18 22:32:15 +08:00
乌堆小透明
7b613d76b6 New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin
2023-02-18 22:32:13 +08:00
乌堆小透明
3b1651554d New translations strings.xml (Russian)
[ci skip] New translations from Crowdin
2023-02-18 22:32:11 +08:00
乌堆小透明
752fb84d39 New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin
2023-02-18 22:32:10 +08:00
乌堆小透明
b3fbfcea86 New translations strings.xml (Polish)
[ci skip] New translations from Crowdin
2023-02-18 22:32:10 +08:00
乌堆小透明
44b671fa9e New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin
2023-02-18 22:32:08 +08:00
乌堆小透明
7020324ef7 New translations strings.xml (Korean)
[ci skip] New translations from Crowdin
2023-02-18 22:32:07 +08:00
乌堆小透明
5fc1e9deaa New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin
2023-02-18 22:32:06 +08:00
乌堆小透明
2ce513bc97 New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin
2023-02-18 22:32:05 +08:00
乌堆小透明
28cf25b08c New translations strings.xml (Czech)
[ci skip] New translations from Crowdin
2023-02-18 22:32:01 +08:00
乌堆小透明
0b0b401d2f New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2023-02-18 22:31:59 +08:00
乌堆小透明
f31bdab7f9 New translations strings.xml (French)
[ci skip] New translations from Crowdin
2023-02-18 22:31:58 +08:00
乌堆小透明
33be4dd4e9 New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin
2023-02-18 22:31:57 +08:00
乌堆小透明
5eb4b08079 New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2023-02-18 22:23:12 +08:00
19 changed files with 494 additions and 589 deletions

View File

@@ -1,4 +1,4 @@
name: PR Check name: Android CI
on: on:
pull_request: pull_request:

View File

@@ -1,50 +0,0 @@
name: Dev
on:
push:
branches: [ "main" ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Clone UI
run: |
cd blockmiui
git submodule init
git submodule update
- name: Build with Gradle
run: |
bash ./gradlew assembleDebug
- name: Sign Debug APK
if: success()
id: sign_debug
uses: r0adkll/sign-android-release@v1.0.4
with:
releaseDirectory: ./app/build/outputs/apk/debug
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.KEY_STORE_ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_STORE_PASSWORD }}
- name: Upload Debug APK
uses: actions/upload-artifact@v2
with:
name: WooBox_Debug
path: ${{ steps.sign_debug.outputs.signedReleaseFile }}

View File

@@ -13,9 +13,7 @@
### 模块说明 ### 模块说明
开发者:[酷安@乌堆小透明](http://www.coolapk.com/u/883441) 开发者:[酷安@乌堆小透明](http://www.coolapk.com/u/883441)
当前仅基于`Android13`进行开发,`Android12`几乎不再维护。也有基于`Android13`开发,但是能在`Android12`使用的情况,请广大社区使用`Android12`的开发者自行测试和修复后提交`Pull Request`
--- ---

View File

@@ -11,12 +11,6 @@
--- ---
### Module Description
Currently only developed based on `Android13`, `Android12` is almost no longer maintained. There are also cases where the development is based on `Android13`, but it can be used in `Android12`. Developers in the community who use `Android12` are requested to submit `Pull Request` after testing and repairing by themselves.
---
### Screenshot ### Screenshot
![Screenshot](https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/en.jpg) ![Screenshot](https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/en.jpg)

View File

@@ -11,8 +11,8 @@ android {
applicationId = "com.lt2333.simplicitytools" applicationId = "com.lt2333.simplicitytools"
minSdk = 31 minSdk = 31
targetSdk = 33 targetSdk = 33
versionCode = 75 versionCode = 74
versionName = "1.7.5" versionName = "1.7.4"
buildConfigField("String", "BUILD_TIME", "\"${System.currentTimeMillis()}\"") buildConfigField("String", "BUILD_TIME", "\"${System.currentTimeMillis()}\"")
} }

View File

@@ -1,7 +1,5 @@
package com.lt2333.simplicitytools.activity.pages.s package com.lt2333.simplicitytools.activity.pages.s
import android.content.Intent
import android.net.Uri
import android.view.View import android.view.View
import android.widget.Switch import android.widget.Switch
import android.widget.Toast import android.widget.Toast
@@ -13,11 +11,11 @@ import cn.fkj233.ui.activity.view.SwitchV
import cn.fkj233.ui.activity.view.TextSummaryV import cn.fkj233.ui.activity.view.TextSummaryV
import cn.fkj233.ui.activity.view.TextV import cn.fkj233.ui.activity.view.TextV
import cn.fkj233.ui.dialog.MIUIDialog import cn.fkj233.ui.dialog.MIUIDialog
import cn.fkj233.ui.dialog.NewDialog
import com.lt2333.simplicitytools.R import com.lt2333.simplicitytools.R
import java.util.HashMap
@BMPage("scope_systemui", "System UI", hideMenu = false) @BMPage("scope_systemui","System UI", hideMenu = false)
class SystemUIPageForS : BasePage() { class SystemUIPageForS : BasePage() {
override fun onCreate() { override fun onCreate() {
@@ -56,10 +54,11 @@ class SystemUIPageForS : BasePage() {
} }
}) })
val layoutCompatibilityBinding = GetDataBinding({ val layoutCompatibilityModeBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean( MIUIActivity.safeSP.getInt(
"layout_compatibility_mode", false "screen_hole_location",
) 0
) == 2
}) { view, flags, data -> }) { view, flags, data ->
when (flags) { when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean 1 -> (view as Switch).isEnabled = data as Boolean
@@ -67,23 +66,57 @@ class SystemUIPageForS : BasePage() {
} }
} }
TextSummaryWithSwitch( val screenHoleLocation: HashMap<Int, String> = hashMapOf<Int, String>().also {
it[0] = getString(R.string.off)
it[1] = getString(R.string.center)
it[2] = getString(R.string.left_or_right)
}
TextSummaryWithSpinner(
TextSummaryV( TextSummaryV(
textId = R.string.layout_compatibility_mode, tipsId = R.string.layout_compatibility_mode_summary textId = R.string.layout_compatibility_mode,
), SwitchV("layout_compatibility_mode", dataBindingSend = layoutCompatibilityBinding.bindingSend) tipsId = R.string.screen_hole_location
) ),
SpinnerV(
screenHoleLocation[MIUIActivity.safeSP.getInt(
"screen_hole_location",
0
)].toString()
) {
add(screenHoleLocation[0].toString()) {
MIUIActivity.safeSP.putAny("screen_hole_location", 0)
layoutCompatibilityModeBinding.binding.Send().send(false)
}
add(screenHoleLocation[1].toString()) {
MIUIActivity.safeSP.putAny("screen_hole_location", 1)
layoutCompatibilityModeBinding.binding.Send().send(false)
}
add(screenHoleLocation[2].toString()) {
MIUIActivity.safeSP.putAny("screen_hole_location", 2)
layoutCompatibilityModeBinding.binding.Send().send(true)
}
})
Text( Text(
textId = R.string.left_margin, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2) textId = R.string.left_margin,
dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2)
) )
SeekBarWithText( SeekBarWithText(
"status_bar_left_margin", 0, 300, 0, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2) "status_bar_left_margin",
0,
300,
0,
dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2)
) )
Text( Text(
textId = R.string.right_margin, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2) textId = R.string.right_margin,
dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2)
) )
SeekBarWithText( SeekBarWithText(
"status_bar_right_margin", 0, 300, 0, dataBindingRecv = layoutCompatibilityBinding.binding.getRecv(2) "status_bar_right_margin",
0,
300,
0,
dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2)
) )
Line() Line()
TitleText(textId = R.string.status_bar_clock_format) TitleText(textId = R.string.status_bar_clock_format)
@@ -213,37 +246,23 @@ class SystemUIPageForS : BasePage() {
//极客模式起始 //极客模式起始
TextSummaryWithArrow(TextSummaryV(textId = R.string.custom_clock_format_geek) { TextSummaryWithArrow(TextSummaryV(textId = R.string.custom_clock_format_geek) {
NewDialog(activity) { MIUIDialog(activity) {
setTitle(R.string.custom_clock_format_geek) setTitle(R.string.custom_clock_format_geek)
setEditText( setEditText(MIUIActivity.safeSP.getString("custom_clock_format_geek", "HH:mm:ss"), "", isSingleLine = false)
MIUIActivity.safeSP.getString("custom_clock_format_geek", "HH:mm:ss"), "", isSingleLine = false setLButton(textId = R.string.cancel) {
) dismiss()
Button(getString(R.string.click_to_view_use_cases)) {
val locale = context.resources.configuration.locale
val language = locale.language
if (language.endsWith("zh")) {
val uri = Uri.parse("https://zhuti.designer.xiaomi.com/docs/grammar/#%E6%97%B6%E9%97%B4%E6%97%A5%E6%9C%9F")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
} else {
val uri = Uri.parse("https://docs.google.com/spreadsheets/d/1ghkT2iFbxB3bT4TKCiKAfmEdGt6kTVKFU3dm4Nz1or8/edit?usp=sharing")
val intent = Intent(Intent.ACTION_VIEW, uri)
activity.startActivity(intent)
}
} }
Button(getString(R.string.Done)) { setRButton(textId = R.string.Done) {
if (getEditText().isNotEmpty()) { if (getEditText().isNotEmpty()) {
try { try {
MIUIActivity.safeSP.putAny("custom_clock_format_geek", getEditText()) MIUIActivity.safeSP.putAny("custom_clock_format_geek", getEditText())
dismiss() dismiss()
return@Button return@setRButton
} catch (_: Throwable) { } catch (_: Throwable) {
} }
} }
Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT).show() Toast.makeText(activity, R.string.input_error, Toast.LENGTH_SHORT)
} .show()
Button(getString(R.string.cancel), cancelStyle = true) {
dismiss()
} }
}.show() }.show()
}, dataBindingRecv = customClockGeekBinding.binding.getRecv(2)) }, dataBindingRecv = customClockGeekBinding.binding.getRecv(2))

View File

@@ -566,13 +566,6 @@ import com.lt2333.simplicitytools.R
) )
Line() Line()
TitleText(textId = R.string.control_center) TitleText(textId = R.string.control_center)
TextSummaryWithSwitch(
TextSummaryV(
textId = R.string.disable_bluetooth_temporarily_off
), SwitchV(
"disable_bluetooth_temporarily_off"
)
)
val controlCenterWeatherBinding = GetDataBinding({ val controlCenterWeatherBinding = GetDataBinding({
MIUIActivity.safeSP.getBoolean( MIUIActivity.safeSP.getBoolean(
"control_center_weather", false "control_center_weather", false

View File

@@ -32,7 +32,37 @@ import com.lt2333.simplicitytools.hooks.rules.s.systemui.StatusBarLayoutForS
import com.lt2333.simplicitytools.hooks.rules.s.systemui.StatusBarNetworkSpeedRefreshSpeedForS import com.lt2333.simplicitytools.hooks.rules.s.systemui.StatusBarNetworkSpeedRefreshSpeedForS
import com.lt2333.simplicitytools.hooks.rules.s.systemui.StatusBarTimeCustomizationForS import com.lt2333.simplicitytools.hooks.rules.s.systemui.StatusBarTimeCustomizationForS
import com.lt2333.simplicitytools.hooks.rules.s.systemui.WaveChargeForS import com.lt2333.simplicitytools.hooks.rules.s.systemui.WaveChargeForS
import com.lt2333.simplicitytools.hooks.rules.t.systemui.* import com.lt2333.simplicitytools.hooks.rules.t.systemui.BatteryPercentageForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.CanNotificationSlideForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.ControlCenterWeatherForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.CustomMobileTypeTextForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.DoubleLineNetworkSpeedForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideBatteryIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideHDIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideMobileActivityIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideMobileTypeIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideNetworkSpeedSplitterForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideSimIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideStatusBarIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideStatusBarNetworkSpeedSecondForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.HideWifiActivityIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.LockScreenClockDisplaySecondsForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.LockScreenCurrentForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.LockScreenDoubleTapToSleepForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.MaximumNumberOfNotificationIconsForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.NewNotificationWeatherForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.NotificationWeatherForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.OldNotificationWeatherForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.OldQSCustomForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.RemoveLockScreenCameraForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.RemoveTheLeftSideOfTheLockScreenForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.ShowWifiStandardForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.StatusBarBigMobileTypeIconForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.StatusBarDoubleTapToSleepForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.StatusBarLayoutForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.StatusBarNetworkSpeedRefreshSpeedForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.StatusBarTimeCustomizationForT
import com.lt2333.simplicitytools.hooks.rules.t.systemui.WaveChargeForT
import com.lt2333.simplicitytools.utils.xposed.base.AppRegister import com.lt2333.simplicitytools.utils.xposed.base.AppRegister
import de.robv.android.xposed.callbacks.XC_LoadPackage import de.robv.android.xposed.callbacks.XC_LoadPackage
@@ -75,7 +105,6 @@ object SystemUI : AppRegister() {
CanNotificationSlideForT, //允许下滑通知打开小窗 CanNotificationSlideForT, //允许下滑通知打开小窗
LockScreenClockDisplaySecondsForT, // 锁屏时钟显示秒 LockScreenClockDisplaySecondsForT, // 锁屏时钟显示秒
ShowWifiStandardForT, // 显示 WIFI 角标 ShowWifiStandardForT, // 显示 WIFI 角标
DisableBluetoothTemporarilyOffForT, //禁用临时蓝牙关闭
) )
} }

View File

@@ -1,6 +1,5 @@
package com.lt2333.simplicitytools.hooks.rules.s.systemui package com.lt2333.simplicitytools.hooks.rules.s.systemui
import android.app.KeyguardManager import android.app.KeyguardManager
import android.content.Context import android.content.Context
import android.content.res.Configuration import android.content.res.Configuration
@@ -17,11 +16,10 @@ import com.lt2333.simplicitytools.utils.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable import com.lt2333.simplicitytools.utils.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister import com.lt2333.simplicitytools.utils.xposed.base.HookRegister
object StatusBarLayoutForS : HookRegister() { object StatusBarLayoutForS : HookRegister() {
private val getMode = XSPUtils.getInt("status_bar_layout_mode", 0) private val getMode = XSPUtils.getInt("status_bar_layout_mode", 0)
private val isCompatibilityMode = XSPUtils.getBoolean("layout_compatibility_mode", false) private val getHoleLocation = XSPUtils.getInt("screen_hole_location", 0)
private var statusBarLeft = 0 private var statusBarLeft = 0
private var statusBarTop = 0 private var statusBarTop = 0
@@ -34,31 +32,23 @@ object StatusBarLayoutForS : HookRegister() {
var mCenterLayout: LinearLayout? var mCenterLayout: LinearLayout?
var statusBar: ViewGroup? = null var statusBar: ViewGroup? = null
//判断屏幕状态更新布局 mode: 1正常布局 2居中布局 fun updateLayout(context: Context) {
fun updateLayout(context: Context,mode: Int) { //判断屏幕方向
when(mode){ val mConfiguration: Configuration = context.resources.configuration
1->{ if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) {
val mConfiguration: Configuration = context.resources.configuration mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏 mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(statusBarLeft, statusBarTop, statusBarRight, statusBarBottom) statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
} } else {
} //横屏状态
2->{ mLeftLayout!!.setPadding(175, 0, 0, 0)
val mConfiguration: Configuration = context.resources.configuration mRightLayout!!.setPadding(0, 0, 175, 0)
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏 statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
}else{ //竖屏
mLeftLayout!!.setPadding(0, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, 0, 0)
}
}
} }
} }
//判断是否开启挖孔兼容模式 //判断是否开启居中挖孔兼容模式
if (isCompatibilityMode) { if (getHoleLocation == 1) {
findMethod("com.android.systemui.ScreenDecorations\$DisplayCutoutView") { findMethod("com.android.systemui.ScreenDecorations\$DisplayCutoutView") {
name == "boundsFromDirection" && parameterCount == 3 && isStatic name == "boundsFromDirection" && parameterCount == 3 && isStatic
}.hookBefore { }.hookBefore {
@@ -66,83 +56,48 @@ object StatusBarLayoutForS : HookRegister() {
} }
} }
//修改对应布局
when (getMode) { when (getMode) {
//默认 //默认
0 -> { 0 -> return
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2
}.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui")
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
if (statusBar == null) return@hookAfter
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,1)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,1)
}
}
}
//时钟居中 //时钟居中
1 -> { 1 -> {
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") { findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2 name == "onViewCreated" && parameterCount == 2
}.hookAfter { param -> }.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar") val miuiPhoneStatusBarView =
param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui") val statusBarId: Int =
val statusBarContentsId: Int = res.getIdentifier( res.getIdentifier("status_bar", "id", "com.android.systemui")
"status_bar_contents", "id", "com.android.systemui" val statusBarContentsId: Int =
) res.getIdentifier("status_bar_contents", "id", "com.android.systemui")
val systemIconAreaId: Int = res.getIdentifier("system_icon_area", "id", "com.android.systemui") val systemIconAreaId: Int =
res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui") val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val phoneStatusBarLeftContainerId: Int = res.getIdentifier( val phoneStatusBarLeftContainerId: Int =
"phone_status_bar_left_container", "id", "com.android.systemui" res.getIdentifier(
) "phone_status_bar_left_container",
val notificationIconAreaInnerId: Int = res.getIdentifier( "id",
"notification_icon_area_inner", "id", "com.android.systemui" "com.android.systemui"
) )
val notificationIconAreaInnerId: Int =
res.getIdentifier(
"notification_icon_area_inner",
"id",
"com.android.systemui"
)
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId) statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
val statusBarContents: ViewGroup = miuiPhoneStatusBarView.findViewById(statusBarContentsId) val statusBarContents: ViewGroup =
miuiPhoneStatusBarView.findViewById(statusBarContentsId)
if (statusBar == null) return@hookAfter if (statusBar == null) return@hookAfter
val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId) val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
val phoneStatusBarLeftContainer: ViewGroup = miuiPhoneStatusBarView.findViewById( val phoneStatusBarLeftContainer: ViewGroup =
phoneStatusBarLeftContainerId miuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId)
) val notificationIconAreaInner: ViewGroup =
val notificationIconAreaInner: ViewGroup = miuiPhoneStatusBarView.findViewById( miuiPhoneStatusBarView.findViewById(notificationIconAreaInnerId)
notificationIconAreaInnerId val systemIconArea: ViewGroup =
) miuiPhoneStatusBarView.findViewById(systemIconAreaId)
val systemIconArea: ViewGroup = miuiPhoneStatusBarView.findViewById(systemIconAreaId)
(clock.parent as ViewGroup).removeView(clock) (clock.parent as ViewGroup).removeView(clock)
(phoneStatusBarLeftContainer.parent as ViewGroup).removeView( (phoneStatusBarLeftContainer.parent as ViewGroup).removeView(
@@ -153,39 +108,41 @@ object StatusBarLayoutForS : HookRegister() {
) )
(systemIconArea.parent as ViewGroup).removeView(systemIconArea) (systemIconArea.parent as ViewGroup).removeView(systemIconArea)
val mConstraintLayout = ConstraintLayout(context).also { val mConstraintLayout =
it.layoutParams = ConstraintLayout.LayoutParams( ConstraintLayout(context).also {
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT it.layoutParams = ConstraintLayout.LayoutParams(
) ConstraintLayout.LayoutParams.MATCH_PARENT,
} ConstraintLayout.LayoutParams.MATCH_PARENT
)
}
mConstraintLayout.addView(notificationIconAreaInner) mConstraintLayout.addView(notificationIconAreaInner)
val fullscreenNotificationIconAreaLp = LinearLayout.LayoutParams( val fullscreenNotificationIconAreaLp = LinearLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
) )
notificationIconAreaInner.layoutParams = fullscreenNotificationIconAreaLp notificationIconAreaInner.layoutParams = fullscreenNotificationIconAreaLp
//增加一个左对齐布局 //增加一个左对齐布局
mLeftLayout = LinearLayout(context) mLeftLayout = LinearLayout(context)
val leftLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val leftLp: LinearLayout.LayoutParams =
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
)
mLeftLayout!!.layoutParams = leftLp mLeftLayout!!.layoutParams = leftLp
mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL
//增加一个居中布局 //增加一个居中布局
mCenterLayout = LinearLayout(context) mCenterLayout = LinearLayout(context)
val centerLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val centerLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
) )
mCenterLayout!!.layoutParams = centerLp mCenterLayout!!.layoutParams = centerLp
mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL
mRightLayout = LinearLayout(context) mRightLayout = LinearLayout(context)
val rightLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val rightLp: LinearLayout.LayoutParams =
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
)
mRightLayout!!.layoutParams = rightLp mRightLayout!!.layoutParams = rightLp
mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL
mLeftLayout!!.addView(phoneStatusBarLeftContainer) mLeftLayout!!.addView(phoneStatusBarLeftContainer)
@@ -203,7 +160,7 @@ object StatusBarLayoutForS : HookRegister() {
statusBarBottom = statusBar!!.paddingBottom statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) { if (getHoleLocation == 2) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0) val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) { if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin statusBarLeft = customLeftMargin
@@ -213,7 +170,7 @@ object StatusBarLayoutForS : HookRegister() {
if (customRightMargin != 0) { if (customRightMargin != 0) {
statusBarRight = customRightMargin statusBarRight = customRightMargin
} }
updateLayout(context,2) updateLayout(context)
} }
} }
@@ -222,7 +179,7 @@ object StatusBarLayoutForS : HookRegister() {
}.hookAfter { }.hookAfter {
hasEnable("layout_compatibility_mode") { hasEnable("layout_compatibility_mode") {
val context = (it.thisObject as ViewGroup).context val context = (it.thisObject as ViewGroup).context
updateLayout(context,2) updateLayout(context)
} }
} }
} }
@@ -231,12 +188,14 @@ object StatusBarLayoutForS : HookRegister() {
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") { findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2 name == "onViewCreated" && parameterCount == 2
}.hookAfter { param -> }.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar") val miuiPhoneStatusBarView =
param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources val res: Resources = miuiPhoneStatusBarView.resources
//组件ID //组件ID
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui") val statusBarId: Int =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui") val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val batteryId: Int = res.getIdentifier("battery", "id", "com.android.systemui") val batteryId: Int = res.getIdentifier("battery", "id", "com.android.systemui")
@@ -248,7 +207,8 @@ object StatusBarLayoutForS : HookRegister() {
//新建布局 //新建布局
val rightLp = LinearLayout.LayoutParams( val rightLp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
).also { ).also {
it.marginStart = dp2px(context, 5f) it.marginStart = dp2px(context, 5f)
} }
@@ -260,36 +220,6 @@ object StatusBarLayoutForS : HookRegister() {
battery.addView(mRightLayout) battery.addView(mRightLayout)
(clock.parent as ViewGroup).removeView(clock) (clock.parent as ViewGroup).removeView(clock)
mRightLayout!!.addView(clock) mRightLayout!!.addView(clock)
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,1)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,1)
}
} }
} }
//时钟居中+图标居左 //时钟居中+图标居左
@@ -297,45 +227,65 @@ object StatusBarLayoutForS : HookRegister() {
findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") { findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2 name == "onViewCreated" && parameterCount == 2
}.hookAfter { param -> }.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar") val miuiPhoneStatusBarView =
param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui") val statusBarId: Int =
val statusBarContentsId: Int = res.getIdentifier( res.getIdentifier("status_bar", "id", "com.android.systemui")
"status_bar_contents", "id", "com.android.systemui" val statusBarContentsId: Int =
) res.getIdentifier("status_bar_contents", "id", "com.android.systemui")
val systemIconAreaId: Int = res.getIdentifier("system_icon_area", "id", "com.android.systemui") val systemIconAreaId: Int =
res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui") val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val phoneStatusBarLeftContainerId: Int = res.getIdentifier( val phoneStatusBarLeftContainerId: Int =
"phone_status_bar_left_container", "id", "com.android.systemui" res.getIdentifier(
) "phone_status_bar_left_container",
val fullscreenNotificationIconAreaId: Int = res.getIdentifier( "id",
"fullscreen_notification_icon_area", "id", "com.android.systemui" "com.android.systemui"
) )
val statusIconsId: Int = res.getIdentifier( val fullscreenNotificationIconAreaId: Int =
"statusIcons", "id", "com.android.systemui" res.getIdentifier(
) "fullscreen_notification_icon_area",
val systemIconsId: Int = res.getIdentifier( "id",
"system_icons", "id", "com.android.systemui" "com.android.systemui"
) )
val batteryId: Int = res.getIdentifier( val statusIconsId: Int =
"battery", "id", "com.android.systemui" res.getIdentifier(
) "statusIcons",
"id",
"com.android.systemui"
)
val systemIconsId: Int =
res.getIdentifier(
"system_icons",
"id",
"com.android.systemui"
)
val batteryId: Int =
res.getIdentifier(
"battery",
"id",
"com.android.systemui"
)
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId) statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
val statusBarContents: ViewGroup = miuiPhoneStatusBarView.findViewById(statusBarContentsId) val statusBarContents: ViewGroup =
miuiPhoneStatusBarView.findViewById(statusBarContentsId)
if (statusBar == null) return@hookAfter if (statusBar == null) return@hookAfter
val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId) val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
val phoneStatusBarLeftContainer: ViewGroup = miuiPhoneStatusBarView.findViewById( val phoneStatusBarLeftContainer: ViewGroup =
phoneStatusBarLeftContainerId miuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId)
) val fullscreenNotificationIconArea: ViewGroup =
val fullscreenNotificationIconArea: ViewGroup = miuiPhoneStatusBarView.findViewById( miuiPhoneStatusBarView.findViewById(fullscreenNotificationIconAreaId)
fullscreenNotificationIconAreaId val systemIconArea: ViewGroup =
) miuiPhoneStatusBarView.findViewById(systemIconAreaId)
val systemIconArea: ViewGroup = miuiPhoneStatusBarView.findViewById(systemIconAreaId) val statusIcons: ViewGroup =
val statusIcons: ViewGroup = miuiPhoneStatusBarView.findViewById(statusIconsId) miuiPhoneStatusBarView.findViewById(statusIconsId)
val systemIcons: ViewGroup = miuiPhoneStatusBarView.findViewById(systemIconsId) val systemIcons: ViewGroup =
val battery: ViewGroup = miuiPhoneStatusBarView.findViewById(batteryId) miuiPhoneStatusBarView.findViewById(systemIconsId)
val battery: ViewGroup =
miuiPhoneStatusBarView.findViewById(batteryId)
(clock.parent as ViewGroup).removeView(clock) (clock.parent as ViewGroup).removeView(clock)
(phoneStatusBarLeftContainer.parent as ViewGroup).removeView( (phoneStatusBarLeftContainer.parent as ViewGroup).removeView(
@@ -349,25 +299,29 @@ object StatusBarLayoutForS : HookRegister() {
fullscreenNotificationIconArea fullscreenNotificationIconArea
) )
val mConstraintLayout = ConstraintLayout(context).also { val mConstraintLayout =
it.layoutParams = ConstraintLayout.LayoutParams( ConstraintLayout(context).also {
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT it.layoutParams = ConstraintLayout.LayoutParams(
) ConstraintLayout.LayoutParams.MATCH_PARENT,
} ConstraintLayout.LayoutParams.MATCH_PARENT
)
}
mConstraintLayout.addView(fullscreenNotificationIconArea) mConstraintLayout.addView(fullscreenNotificationIconArea)
mConstraintLayout.addView(battery) mConstraintLayout.addView(battery)
battery.layoutParams = ConstraintLayout.LayoutParams( battery.layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.MATCH_PARENT ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
).also { ).also {
it.endToEnd = 0 it.endToEnd = 0
} }
fullscreenNotificationIconArea.layoutParams = ConstraintLayout.LayoutParams( fullscreenNotificationIconArea.layoutParams = ConstraintLayout.LayoutParams(
0, ConstraintLayout.LayoutParams.MATCH_PARENT 0,
ConstraintLayout.LayoutParams.MATCH_PARENT
).also { ).also {
it.startToEnd = batteryId it.startToEnd = batteryId
it.endToEnd = 0 it.endToEnd = 0
@@ -377,25 +331,24 @@ object StatusBarLayoutForS : HookRegister() {
//增加一个左对齐布局 //增加一个左对齐布局
mLeftLayout = LinearLayout(context) mLeftLayout = LinearLayout(context)
val leftLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val leftLp: LinearLayout.LayoutParams =
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
)
mLeftLayout!!.layoutParams = leftLp mLeftLayout!!.layoutParams = leftLp
mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL
//增加一个居中布局 //增加一个居中布局
mCenterLayout = LinearLayout(context) mCenterLayout = LinearLayout(context)
val centerLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val centerLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
) )
mCenterLayout!!.layoutParams = centerLp mCenterLayout!!.layoutParams = centerLp
mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL
//增加一个右布局 //增加一个右布局
mRightLayout = LinearLayout(context) mRightLayout = LinearLayout(context)
val rightLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams( val rightLp: LinearLayout.LayoutParams =
0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
)
mRightLayout!!.layoutParams = rightLp mRightLayout!!.layoutParams = rightLp
mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL
@@ -422,7 +375,7 @@ object StatusBarLayoutForS : HookRegister() {
statusBarBottom = statusBar!!.paddingBottom statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) { if (getHoleLocation == 2) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0) val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) { if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin statusBarLeft = customLeftMargin
@@ -432,16 +385,16 @@ object StatusBarLayoutForS : HookRegister() {
if (customRightMargin != 0) { if (customRightMargin != 0) {
statusBarRight = customRightMargin statusBarRight = customRightMargin
} }
updateLayout(context,2) updateLayout(context)
} }
} }
//兼容模式 //兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") { findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout" name == "updateLayoutForCutout"
}.hookAfter { }.hookAfter {
if (isCompatibilityMode) { if (getHoleLocation == 2) {
val context = (it.thisObject as ViewGroup).context val context = (it.thisObject as ViewGroup).context
updateLayout(context,2) updateLayout(context)
} }
} }
@@ -451,10 +404,12 @@ object StatusBarLayoutForS : HookRegister() {
}.hookAfter { }.hookAfter {
val miuiPhoneStatusBarView = it.thisObject.getObjectAs<ViewGroup>("mStatusBar") val miuiPhoneStatusBarView = it.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val res = miuiPhoneStatusBarView.resources val res = miuiPhoneStatusBarView.resources
val statusBarId = res.getIdentifier("status_bar", "id", "com.android.systemui") val statusBarId =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBar1 = miuiPhoneStatusBarView.findViewById<ViewGroup>(statusBarId) val statusBar1 = miuiPhoneStatusBarView.findViewById<ViewGroup>(statusBarId)
//非锁屏下整个状态栏布局 //非锁屏下整个状态栏布局
val keyguardMgr = statusBar1.context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager val keyguardMgr =
statusBar1.context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if (keyguardMgr.isKeyguardLocked) { if (keyguardMgr.isKeyguardLocked) {
statusBar1!!.visibility = View.GONE statusBar1!!.visibility = View.GONE
} else { } else {

View File

@@ -2,10 +2,12 @@ package com.lt2333.simplicitytools.hooks.rules.s.systemui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.content.res.Resources
import android.os.Handler import android.os.Handler
import android.provider.Settings import android.provider.Settings
import android.util.TypedValue import android.util.TypedValue
import android.view.Gravity import android.view.Gravity
import android.view.ViewGroup
import android.widget.TextView import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.* import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.XSPUtils import com.lt2333.simplicitytools.utils.XSPUtils
@@ -14,7 +16,6 @@ import java.lang.reflect.Method
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
object StatusBarTimeCustomizationForS : HookRegister() { object StatusBarTimeCustomizationForS : HookRegister() {
private val getMode = XSPUtils.getInt("custom_clock_mode", 0) private val getMode = XSPUtils.getInt("custom_clock_mode", 0)
@@ -29,12 +30,14 @@ object StatusBarTimeCustomizationForS : HookRegister() {
private val isSecond = XSPUtils.getBoolean("status_bar_time_seconds", false) private val isSecond = XSPUtils.getBoolean("status_bar_time_seconds", false)
private val isDoubleHour = XSPUtils.getBoolean("status_bar_time_double_hour", false) private val isDoubleHour = XSPUtils.getBoolean("status_bar_time_double_hour", false)
private val isPeriod = XSPUtils.getBoolean("status_bar_time_period", true) private val isPeriod = XSPUtils.getBoolean("status_bar_time_period", true)
private val isCenterAlign = XSPUtils.getBoolean("status_bar_time_double_line_center_align", false) private val isCenterAlign =
XSPUtils.getBoolean("status_bar_time_double_line_center_align", false)
//极客模式 //极客模式
private val getGeekClockSize = XSPUtils.getInt("status_bar_clock_size_geek", 0) private val getGeekClockSize = XSPUtils.getInt("status_bar_clock_size_geek", 0)
private val getGeekFormat = XSPUtils.getString("custom_clock_format_geek", "HH:mm:ss") private val getGeekFormat = XSPUtils.getString("custom_clock_format_geek", "HH:mm:ss")
private val isGeekCenterAlign = XSPUtils.getBoolean("status_bar_time_center_align_geek", false) private val isGeekCenterAlign =
XSPUtils.getBoolean("status_bar_time_center_align_geek", false)
private lateinit var nowTime: Date private lateinit var nowTime: Date
private var str = "" private var str = ""
@@ -80,7 +83,9 @@ object StatusBarTimeCustomizationForS : HookRegister() {
} }
} }
Timer().scheduleAtFixedRate( Timer().scheduleAtFixedRate(
T(), 1000 - System.currentTimeMillis() % 1000, 1000 T(),
1000 - System.currentTimeMillis() % 1000,
1000
) )
} catch (_: Exception) { } catch (_: Exception) {
} }
@@ -93,7 +98,8 @@ object StatusBarTimeCustomizationForS : HookRegister() {
val textV = it.thisObject as TextView val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") { if (textV.resources.getResourceEntryName(textV.id) == "clock") {
val t = Settings.System.getString( val t = Settings.System.getString(
c!!.contentResolver, Settings.System.TIME_12_24 c!!.contentResolver,
Settings.System.TIME_12_24
) )
val is24 = t == "24" val is24 = t == "24"
nowTime = Calendar.getInstance().time nowTime = Calendar.getInstance().time
@@ -104,18 +110,15 @@ object StatusBarTimeCustomizationForS : HookRegister() {
} }
if (isCenterAlign) { if (isCenterAlign) {
findConstructor("com.android.systemui.statusbar.views.MiuiClock") { findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
paramCount == 3 name == "onViewCreated" && parameterCount == 2
}.hookAfter { }.hookAfter {
try { val miuiPhoneStatusBarView =
val textV = it.thisObject as TextView it.thisObject.getObject("mStatusBar") as ViewGroup
if (textV.resources.getResourceEntryName(textV.id) == "clock") { val res: Resources = miuiPhoneStatusBarView.resources
c = it.args[0] as Context val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val textV = it.thisObject as TextView val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
textV.gravity = Gravity.CENTER clock.gravity = Gravity.CENTER
}
} catch (_: Exception) {
}
} }
} }
} }
@@ -149,7 +152,9 @@ object StatusBarTimeCustomizationForS : HookRegister() {
} }
} }
Timer().scheduleAtFixedRate( Timer().scheduleAtFixedRate(
T(), 1000 - System.currentTimeMillis() % 1000, 1000 T(),
1000 - System.currentTimeMillis() % 1000,
1000
) )
} catch (_: Exception) { } catch (_: Exception) {
} }
@@ -157,38 +162,27 @@ object StatusBarTimeCustomizationForS : HookRegister() {
findMethod("com.android.systemui.statusbar.views.MiuiClock") { findMethod("com.android.systemui.statusbar.views.MiuiClock") {
name == "updateTime" name == "updateTime"
}.hookBefore { }.hookAfter {
try { try {
val textV = it.thisObject as TextView val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") { if (textV.resources.getResourceEntryName(textV.id) == "clock") {
val mMiuiStatusBarClockController = textV.getObject("mMiuiStatusBarClockController") nowTime = Calendar.getInstance().time
val mCalendar = mMiuiStatusBarClockController.invokeMethodAuto("getCalendar") textV.text = SimpleDateFormat(getGeekFormat).format(nowTime)
mCalendar?.invokeMethodAuto(
"setTimeInMillis", System.currentTimeMillis()
)
val textSb = StringBuilder()
val formatSb = StringBuilder(getGeekFormat.toString())
mCalendar?.invokeMethodAuto("format", c, textSb, formatSb)
textV.text = textSb.toString()
it.result = null
} }
} catch (_: Exception) { } catch (_: Exception) {
} }
} }
if (isGeekCenterAlign) { if (isGeekCenterAlign) {
findConstructor("com.android.systemui.statusbar.views.MiuiClock") { findMethod("com.android.systemui.statusbar.phone.CollapsedStatusBarFragment") {
paramCount == 3 name == "onViewCreated" && parameterCount == 2
}.hookAfter { }.hookAfter {
try { val miuiPhoneStatusBarView =
val textV = it.thisObject as TextView it.thisObject.getObject("mStatusBar") as ViewGroup
if (textV.resources.getResourceEntryName(textV.id) == "clock") { val res: Resources = miuiPhoneStatusBarView.resources
c = it.args[0] as Context val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val textV = it.thisObject as TextView val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId)
textV.gravity = Gravity.CENTER clock.gravity = Gravity.CENTER
}
} catch (_: Exception) {
}
} }
} }
} }
@@ -203,6 +197,7 @@ object StatusBarTimeCustomizationForS : HookRegister() {
if (isYear) { if (isYear) {
if (isZh) { if (isZh) {
datePattern += "YY年" datePattern += "YY年"
// if (!isHideSpace) datePattern = "$datePattern "
} else { } else {
datePattern += "YY" datePattern += "YY"
if (isMonth || isDay) datePattern += "/" if (isMonth || isDay) datePattern += "/"
@@ -211,6 +206,7 @@ object StatusBarTimeCustomizationForS : HookRegister() {
if (isMonth) { if (isMonth) {
if (isZh) { if (isZh) {
datePattern += "M月" datePattern += "M月"
// if (!isHideSpace) datePattern = "$datePattern "
} else { } else {
datePattern += "M" datePattern += "M"
if (isDay) datePattern += "/" if (isDay) datePattern += "/"

View File

@@ -1,16 +0,0 @@
package com.lt2333.simplicitytools.hooks.rules.t.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookBefore
import com.lt2333.simplicitytools.utils.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister
object DisableBluetoothTemporarilyOffForT: HookRegister() {
override fun init()= hasEnable("disable_bluetooth_temporarily_off") {
findMethod("com.android.settingslib.bluetooth.LocalBluetoothAdapter"){
name == "isSupportBluetoothRestrict" && parameterCount==1
}.hookBefore {
it.result = false
}
}
}

View File

@@ -28,31 +28,21 @@ object StatusBarLayoutForT : HookRegister() {
private var statusBarBottom = 0 private var statusBarBottom = 0
override fun init() { override fun init() {
// TODO: Android13状态栏布局不可用
var mLeftLayout: LinearLayout? = null var mLeftLayout: LinearLayout? = null
var mRightLayout: LinearLayout? = null var mRightLayout: LinearLayout? = null
var mCenterLayout: LinearLayout? var mCenterLayout: LinearLayout?
var statusBar: ViewGroup? = null var statusBar: ViewGroup? = null
//判断屏幕状态更新布局 mode: 1正常布局 2居中布局 fun updateLayout(context: Context) {
fun updateLayout(context: Context,mode: Int) { //判断屏幕方向
when(mode){ val mConfiguration: Configuration = context.resources.configuration
1->{ if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) {
val mConfiguration: Configuration = context.resources.configuration mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏 mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(statusBarLeft, statusBarTop, statusBarRight, statusBarBottom) statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
}
}
2->{
val mConfiguration: Configuration = context.resources.configuration
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { //横屏
mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
}else{ //竖屏
mLeftLayout!!.setPadding(0, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, 0, 0)
}
}
} }
} }
@@ -65,52 +55,9 @@ object StatusBarLayoutForT : HookRegister() {
} }
} }
//修改对应布局
when (getMode) { when (getMode) {
//默认 //默认
0 -> { 0 -> return
findMethod("com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment") {
name == "onViewCreated" && parameterCount == 2
}.hookAfter { param ->
val miuiPhoneStatusBarView = param.thisObject.getObjectAs<ViewGroup>("mStatusBar")
val context: Context = miuiPhoneStatusBarView.context
val res: Resources = miuiPhoneStatusBarView.resources
val statusBarId: Int = res.getIdentifier("status_bar", "id", "com.android.systemui")
statusBar = miuiPhoneStatusBarView.findViewById(statusBarId)
if (statusBar == null) return@hookAfter
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,1)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,1)
}
}
}
//时钟居中 //时钟居中
1 -> { 1 -> {
findMethod("com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment") { findMethod("com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment") {
@@ -212,7 +159,7 @@ object StatusBarLayoutForT : HookRegister() {
if (customRightMargin != 0) { if (customRightMargin != 0) {
statusBarRight = customRightMargin statusBarRight = customRightMargin
} }
updateLayout(context,2) updateLayout(context)
} }
} }
@@ -221,7 +168,7 @@ object StatusBarLayoutForT : HookRegister() {
}.hookAfter { }.hookAfter {
hasEnable("layout_compatibility_mode") { hasEnable("layout_compatibility_mode") {
val context = (it.thisObject as ViewGroup).context val context = (it.thisObject as ViewGroup).context
updateLayout(context,2) updateLayout(context)
} }
} }
} }
@@ -259,36 +206,6 @@ object StatusBarLayoutForT : HookRegister() {
battery.addView(mRightLayout) battery.addView(mRightLayout)
(clock.parent as ViewGroup).removeView(clock) (clock.parent as ViewGroup).removeView(clock)
mRightLayout!!.addView(clock) mRightLayout!!.addView(clock)
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (isCompatibilityMode) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context,1)
}
}
//兼容模式
findMethod("com.android.systemui.statusbar.phone.PhoneStatusBarView") {
name == "updateLayoutForCutout"
}.hookAfter {
if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context,1)
}
} }
} }
//时钟居中+图标居左 //时钟居中+图标居左
@@ -431,7 +348,7 @@ object StatusBarLayoutForT : HookRegister() {
if (customRightMargin != 0) { if (customRightMargin != 0) {
statusBarRight = customRightMargin statusBarRight = customRightMargin
} }
updateLayout(context,2) updateLayout(context)
} }
} }
//兼容模式 //兼容模式
@@ -440,7 +357,7 @@ object StatusBarLayoutForT : HookRegister() {
}.hookAfter { }.hookAfter {
if (isCompatibilityMode) { if (isCompatibilityMode) {
val context = (it.thisObject as ViewGroup).context val context = (it.thisObject as ViewGroup).context
updateLayout(context,2) updateLayout(context)
} }
} }

View File

@@ -247,4 +247,5 @@
<string name="miuihome_shortcut_add_small_window_summary">Mantener presionando el icono del escritorio para añadir a una ventana de acceso rápido</string> <string name="miuihome_shortcut_add_small_window_summary">Mantener presionando el icono del escritorio para añadir a una ventana de acceso rápido</string>
<string name="miuihome_shortcut_add_small_window_title">Ventana pequeña </string> <string name="miuihome_shortcut_add_small_window_title">Ventana pequeña </string>
<string name="click_to_view_use_cases">Clic para ver casos de uso</string> <string name="click_to_view_use_cases">Clic para ver casos de uso</string>
<string name="disable_bluetooth_temporarily_off" comment="This function is used to completely close Bluetooth">Deshabilitar Bluetooth temporalmente apagado</string>
</resources> </resources>

View File

@@ -247,4 +247,5 @@
<string name="miuihome_shortcut_add_small_window_summary">ホーム画面のアイコンを長押しすると、素早く開けるウィンドウを追加できます</string> <string name="miuihome_shortcut_add_small_window_summary">ホーム画面のアイコンを長押しすると、素早く開けるウィンドウを追加できます</string>
<string name="miuihome_shortcut_add_small_window_title">小さいウィンドウ</string> <string name="miuihome_shortcut_add_small_window_title">小さいウィンドウ</string>
<string name="click_to_view_use_cases">クリックして使用例を表示</string> <string name="click_to_view_use_cases">クリックして使用例を表示</string>
<string name="disable_bluetooth_temporarily_off" comment="This function is used to completely close Bluetooth">Bluetooth を一時的に無効にする</string>
</resources> </resources>

View File

@@ -1,11 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="performance">Desempenho</string>
<string name="lock_max_fps">Bloqueie o limite superior da taxa de atualização atual</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remover exibição sobre notificação</string>
<string name="delete_on_post_notification_summary">Remover a notificação \"este aplicativo é exibido sobre outros aplicativos\"</string>
<string name="other">Outros</string>
<string name="disable_flag_secure">Permitir captura de ecrã</string>
<!--Status bar icons--> <!--Status bar icons-->
</resources> </resources>

View File

@@ -247,4 +247,5 @@
<string name="miuihome_shortcut_add_small_window_summary">Nhấn và giữ biểu tượng màn hình chính để thêm cửa sổ mở nhanh</string> <string name="miuihome_shortcut_add_small_window_summary">Nhấn và giữ biểu tượng màn hình chính để thêm cửa sổ mở nhanh</string>
<string name="miuihome_shortcut_add_small_window_title">Cửa sổ nhỏ</string> <string name="miuihome_shortcut_add_small_window_title">Cửa sổ nhỏ</string>
<string name="click_to_view_use_cases">Nhấp để xem các trường hợp sử dụng</string> <string name="click_to_view_use_cases">Nhấp để xem các trường hợp sử dụng</string>
<string name="disable_bluetooth_temporarily_off" comment="This function is used to completely close Bluetooth">Vô hiệu hóa bluetooth tạm thời tắt</string>
</resources> </resources>

View File

@@ -1,177 +1,251 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="performance">性能</string> <string name="performance">性能</string>
<string name="lock_max_fps">鎖定當前刷新率上限</string> <string name="lock_max_fps">鎖定目前重新整理速率上限</string>
<string name="ui"></string> <string name="ui"></string>
<string name="delete_on_post_notification">移除上層顯示通知</string> <string name="delete_on_post_notification">移除上層顯示通知</string>
<string name="delete_on_post_notification_summary">移除 \"此應用正顯示在螢幕上其他應用的上層\" 通知</string> <string name="delete_on_post_notification_summary">移除此應用程式正顯示在螢幕上其他應用程式的上層通知</string>
<string name="other">其他</string> <string name="other">其他</string>
<string name="disable_flag_secure">允許截圖</string> <string name="disable_flag_secure">允許螢幕截圖</string>
<string name="disable_flag_secure_summary">開啟後允許在不允許截圖的軟件中截圖\n支持添加下拉控制中心快速開關,保障安全</string> <string name="disable_flag_secure_summary">開啟後允許在不允許截圖的軟件中截圖\n支援新增下拉控制中心快速開關,保障安全</string>
<string name="home">桌面</string> <string name="home">桌面</string>
<string name="home_time">始終顯示桌面時鐘</string> <string name="home_time">始終顯示桌面時鐘</string>
<string name="reboot_host">重啟全部作用域</string> <string name="reboot_host">重啟所有作用範圍</string>
<string name="reboot">重啟系統</string> <string name="reboot">重啟系統</string>
<!--Status bar icons--> <!--Status bar icons-->
<string name="status_bar_icon">狀態欄圖標</string> <string name="status_bar_icon">狀態列圖示</string>
<string name="hide_no_sim_icon">隱藏 無SIM卡 圖標</string> <string name="hide_no_sim_icon">隱藏「無 SIM 卡」圖示</string>
<string name="hide_sim_one_icon">隱藏 SIM卡一 圖標</string> <string name="hide_sim_one_icon">隱藏SIM 卡 1」圖示</string>
<string name="hide_sim_two_icon">隱藏 SIM卡二 圖標</string> <string name="hide_sim_two_icon">隱藏SIM 卡 2」圖示</string>
<string name="hide_vpn_icon">隱藏 VPN 圖標</string> <string name="hide_vpn_icon">隱藏VPN」圖示</string>
<string name="hide_airplane_icon">隱藏 飛行模式 圖標</string> <string name="hide_airplane_icon">隱藏飛行模式」圖示</string>
<string name="hide_wifi_icon">隱藏 WIFI 圖標</string> <string name="hide_wifi_icon">隱藏WIFI」圖示</string>
<string name="hide_bluetooth_icon">隱藏 藍牙 圖標</string> <string name="hide_bluetooth_icon">隱藏藍牙」圖示</string>
<string name="hide_volume_zen_icon">隱藏 聲音、勿擾 圖標</string> <string name="hide_volume_zen_icon">隱藏聲音、勿擾」圖示</string>
<string name="hide_alarm_icon">隱藏 鬧鐘 圖標</string> <string name="hide_alarm_icon">隱藏鬧鐘」圖示</string>
<string name="hide_hotspot_icon">隱藏 WIFI熱點 圖標</string> <string name="hide_hotspot_icon">隱藏WIFI 熱點」圖示</string>
<string name="hide_headset_icon">隱藏 耳機 圖標</string> <string name="hide_headset_icon">隱藏耳機」圖示</string>
<string name="hide_bluetooth_battery_icon">隱藏 藍牙電量 圖標</string> <string name="hide_bluetooth_battery_icon">隱藏藍牙電量」圖示</string>
<string name="hide_nfc_icon">隱藏 NFC 圖標</string> <string name="hide_nfc_icon">隱藏NFC」圖示</string>
<string name="hide_big_hd_icon">隱藏 大HD 圖標</string> <string name="hide_big_hd_icon">隱藏「大型 HD」圖示</string>
<string name="hide_small_hd_icon">隱藏 小HD 圖標</string> <string name="hide_small_hd_icon">隱藏「小型 HD」圖示</string>
<string name="hide_new_hd_icon">隱藏 新HD 圖標</string> <string name="hide_new_hd_icon">隱藏「新 HD」圖示</string>
<string name="hide_hd_no_service_icon">隱藏 HD無服務 圖標</string> <string name="hide_hd_no_service_icon">隱藏HD 無服務」圖示</string>
<string name="about">關於</string> <string name="about">關於</string>
<string name="about_module">關於模</string> <string name="about_module">關於模</string>
<string name="verison">版本</string> <string name="verison">版本</string>
<string name="dev_coolapk">開發酷安</string> <string name="dev_coolapk">開發人員酷安</string>
<string name="opensource">源倉</string> <string name="opensource">放原始碼存放</string>
<string name="github_url">歡迎更多開發共同參與開發</string> <string name="github_url">歡迎更多開發人員共同參與開發</string>
<string name="issues">饋/提議</string> <string name="issues">饋/提議</string>
<string name="issues_url">點擊查看GitHub Issues</string> <string name="issues_url">按一下以檢視 GitHub 問題</string>
<string name="statusbar">狀態欄</string> <string name="xposeddescription">基於 MIUI13+(Android 12+) 的客製化工具</string>
<string name="statusbar">狀態列</string>
<string name="status_bar_time_seconds">顯示秒數</string> <string name="status_bar_time_seconds">顯示秒數</string>
<string name="status_bar_network_speed_refresh_speed">網速秒刷新</string> <string name="status_bar_network_speed_refresh_speed">每秒更新即時網絡速度</string>
<string name="remove_the_maximum_number_of_notification_icons">除通知圖標個數上限</string> <string name="remove_the_maximum_number_of_notification_icons">除通知圖示數目上限</string>
<string name="main_switch">塊總開關</string> <string name="main_switch">組主開關</string>
<string name="hide_gps_icon">隱藏 GPS 圖標</string> <string name="hide_gps_icon">隱藏GPS」圖示</string>
<string name="hide_status_bar_network_speed_second">隱藏網速(/s單位</string> <string name="hide_status_bar_network_speed_second">隱藏網絡速度 (/s) 單位</string>
<string name="menu"></string> <string name="menu"></string>
<string name="Tips">提示</string> <string name="Tips">提示</string>
<string name="skip_waiting_time">跳過 5/10 秒警告時間</string> <string name="skip_waiting_time">跳過 5/10 秒警告時間</string>
<string name="unlock_unlimited_cropping">移除裁剪圖片/螢幕截圖的限制</string> <string name="unlock_unlimited_cropping">移除裁剪圖片/螢幕截圖的限制</string>
<string name="hide_slave_wifi_icon">隱藏 WIFI輔助 圖標</string> <string name="hide_slave_wifi_icon">隱藏WIFI 次要」圖示</string>
<string name="HideLauncherIcon">隱藏桌面圖</string> <string name="HideLauncherIcon">隱藏桌面圖</string>
<string name="hide_battery_percentage_icon">隱藏電量%</string> <string name="hide_battery_percentage_icon">隱藏電量 (%)</string>
<string name="hide_battery_icon">隱藏 電池 圖標</string> <string name="hide_battery_icon">隱藏電池」圖示</string>
<string name="status_bar_clock_format">狀態時鐘格式</string> <string name="status_bar_clock_format">狀態時鐘格式</string>
<string name="status_bar_time_year">顯示年份</string> <string name="status_bar_time_year">顯示年份</string>
<string name="status_bar_time_month">顯示月份</string> <string name="status_bar_time_month">顯示月份</string>
<string name="status_bar_time_day">顯示日期</string> <string name="status_bar_time_day">顯示日期</string>
<string name="status_bar_time_week">顯示星期</string> <string name="status_bar_time_week">顯示星期</string>
<string name="status_bar_time_hide_space">隱藏間隔</string> <string name="status_bar_time_hide_space">隱藏間隔</string>
<string name="allow_screenshots">允許截圖</string> <string name="allow_screenshots">允許截圖</string>
<string name="lock_max">鎖定前上限</string> <string name="lock_max">鎖定前上限</string>
<string name="status_bar_time_double_hour">顯示時辰</string> <string name="status_bar_time_double_hour">顯示時辰</string>
<string name="custom_clock_switch">定義時鐘-總開關</string> <string name="custom_clock_switch">訂時鐘 - 主開關</string>
<string name="status_bar_time_period">顯示時段</string> <string name="status_bar_time_period">顯示時段</string>
<string name="status_bar_time_double_line">顯示</string> <string name="status_bar_time_double_line">顯示</string>
<string name="status_bar_clock_size">時鐘大小0不更改</string> <string name="status_bar_clock_size">時鐘大小 (0無變更)</string>
<string name="status_bar_clock_double_line_size">大小0不更改</string> <string name="status_bar_clock_double_line_size">大小 (0無變更)</string>
<string name="matters_needing_attention">功能無法生效?</string> <string name="matters_needing_attention">功能無法生效?</string>
<string name="Done">確定</string> <string name="Done">確定</string>
<string name="about_module_summary">查看模塊相關訊息</string> <string name="about_module_summary">檢視模組相關資訊</string>
<string name="contributor_list">源倉庫貢獻者名單</string> <string name="contributor_list">放原始碼存放庫貢獻者名單</string>
<string name="developer">開發</string> <string name="developer">開發人員</string>
<string name="thank_list">感謝名單</string> <string name="thank_list">感謝名單</string>
<string name="third_party_open_source_statement">第三方開聲明</string> <string name="third_party_open_source_statement">第三方開放原始碼聲明</string>
<string name="corepacth">除安裝限制</string> <string name="corepacth">除安裝限制</string>
<string name="corepacth_summary">降級/不同簽/無簽安裝</string> <string name="corepacth_summary">降級/不同簽/無簽安裝</string>
<string name="prevent_recovery_of_battery_optimization_white_list">防止恢復電池優化白名單</string> <string name="prevent_recovery_of_battery_optimization_white_list">防止復原電池效能最佳化白名單</string>
<string name="failed_after_restart">系統重啟後仍會還原</string> <string name="failed_after_restart">系統重啟後仍會還原</string>
<string name="battery_optimization">電池</string> <string name="battery_optimization">電池效能最佳</string>
<string name="battery_optimization_summary">快速打開被MIUI隱藏的電池化功能</string> <string name="battery_optimization_summary">快速開啟被 MIUI 隱藏的電池效能最佳化功能</string>
<string name="remove_small_window_restrictions">強制使用小窗</string> <string name="remove_small_window_restrictions">強制使用小窗</string>
<string name="app_coolapk_url">來酷安給我們五星好評</string> <string name="app_coolapk_url">來酷安給我們五星好評</string>
<string name="app_coolapk_url_summary">這可以使我們被更多的人發現</string> <string name="app_coolapk_url_summary">這可以使我們被更多的人發現</string>
<string name="qq_channel">加入 官方QQ頻道</string> <string name="qq_channel">加入官方 QQ 頻道</string>
<string name="tg_channel">加入 官方TG頻道</string> <string name="tg_channel">加入官方 TG 頻道</string>
<string name="tg_channel_summary">可在頻道資料頁進入交流群</string> <string name="tg_channel_summary">可在頻道頁面進入聊天群組</string>
<string name="discussions">討論</string> <string name="discussions">討論</string>
<string name="remove_small_window_restrictions_summary">忽略系統黑名單與軟件禁止小窗</string> <string name="remove_small_window_restrictions_summary">忽略系統黑名單與軟件小窗封鎖</string>
<string name="remove_the_left_side_of_the_lock_screen">移除鎖定螢幕負一屏功能</string> <string name="remove_the_left_side_of_the_lock_screen">移除負一屏功能鎖定</string>
<string name="remove_lock_screen_camera">移除鎖定螢幕相機功能</string> <string name="remove_lock_screen_camera">移除鎖定螢幕相機功能</string>
<string name="only_official_default_themes_are_supported">僅支官方默認主題</string> <string name="only_official_default_themes_are_supported">僅支官方預設主題</string>
<string name="lock_one_hundred">手機管家鎖定100分</string> <string name="lock_one_hundred">手機管家鎖定 100 </string>
<string name="scope">作用</string> <string name="scope">作用範圍</string>
<string name="scope_android">系統</string> <string name="scope_android">系統架</string>
<string name="scope_systemui">系統界面</string> <string name="scope_systemui">系統 UI</string>
<string name="scope_miuihome">系統桌面</string> <string name="scope_miuihome">系統桌面</string>
<string name="scope_other">其他</string> <string name="scope_other">其他</string>
<string name="status_bar_network_speed_refresh_speed_summary">將狀態欄網速組件的刷新頻率改成1s</string> <string name="status_bar_network_speed_refresh_speed_summary">將狀態列網絡速度元件的更新間隔變更為 1s</string>
<string name="hide_battery_percentage_icon_summary">需自行開啟電池百分比外顯功能</string> <string name="hide_battery_percentage_icon_summary">需自行開啟電池百分比外顯功能</string>
<string name="hide_status_bar_network_speed_second_summary">隱藏狀態欄網速組件的(/s單位</string> <string name="hide_status_bar_network_speed_second_summary">隱藏狀態列網絡速度元件的 (/s) 單位</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">除狀態最多能顯示3個通知的限制</string> <string name="remove_the_maximum_number_of_notification_icons_summary">除狀態最多能顯示三條通知的限制</string>
<string name="scope_systemui_summary">定義系統面、狀態、鎖定螢幕等</string> <string name="scope_systemui_summary">系統面、狀態、鎖定螢幕等</string>
<string name="scope_android_summary">首次啟動模塊 或 模塊更新後,\n此處的功能需重啟系統後才能生效</string> <string name="scope_android_summary">首次啟動模組或模組更新後,\n此處的功能需重啟系統後才能生效</string>
<string name="scope_other_summary">手機管家、相編輯、電量與性能等</string> <string name="scope_other_summary">手機管家、相簿編輯、電量與性能等</string>
<string name="scope_powerkeeper">電量與性能</string> <string name="scope_powerkeeper">電量與性能</string>
<string name="scope_securitycenter">手機管家</string> <string name="scope_securitycenter">手機管家</string>
<string name="scope_mediaeditor">編輯</string> <string name="scope_mediaeditor">簿編輯</string>
<string name="home_time_summary">開啟後即使存在時鐘小組件\n也不會對狀態欄隱藏時鐘</string> <string name="home_time_summary">開啟後即使存在時鐘小工具\n也不會隱藏狀態列時鐘</string>
<string name="skip_waiting_time_summary">開啟後可忽略MIUI在開啟USB調試、\n未知來源、無障礙時的凍結時間</string> <string name="skip_waiting_time_summary">開啟後可忽略 MIUI 在開啟 USB 偵錯、\n未知應用程式來源、無障礙時的凍結時間</string>
<string name="lock_one_hundred_summary">鎖定手機管家100分並屏蔽修復按鈕</string> <string name="lock_one_hundred_summary">鎖定手機管家 100 分並封鎖修復按鈕</string>
<string name="unlock_unlimited_cropping_summary">無視MIUI對圖片裁切的最小限制</string> <string name="unlock_unlimited_cropping_summary">忽略 MIUI 對圖片裁切的最小限制</string>
<string name="hide_wifi_activity_icon">隱藏 WIFI箭頭 圖標</string> <string name="hide_wifi_activity_icon">隱藏WIFI 活動」圖示</string>
<string name="hide_mobile_activity_icon">隱藏 移動箭頭 圖標</string> <string name="hide_mobile_activity_icon">隱藏「流動網絡活動」圖示</string>
<string name="hide_mobile_type_icon">隱藏 移動類型 圖標</string> <string name="hide_mobile_type_icon">隱藏「流動網絡類型」圖示</string>
<string name="show_weather_main_switch">顯示天氣-總開關</string> <string name="show_weather_main_switch">顯示天氣 - 主開關</string>
<string name="lock_screen">鎖定螢幕</string> <string name="lock_screen">鎖定螢幕</string>
<string name="notification_center">通知中心</string> <string name="notification_center">通知中心</string>
<string name="show_city">顯示城市</string> <string name="show_city">顯示城市</string>
<string name="lock_max_fps_summary">持添加下拉控制中心快速開關,時切換</string> <string name="lock_max_fps_summary">援新增下拉控制中心快速開關,時切換</string>
<string name="control_center">控制中心</string> <string name="control_center">控制中心</string>
<string name="control_center_weather_summary">暫不支妙享版控制中心</string> <string name="control_center_weather_summary">暫不支妙享版控制中心</string>
<string name="not_support">您似乎正在使用過時的 LSPosed 版本或 LSPosed 未啟,請更新 LSPosed 或者啟動後再試。</string> <string name="not_support">您似乎正在使用過時的 LSPosed 版本或 LSPosed 未啟,請更新 LSPosed 或啟用後再試一次</string>
<string name="matters_needing_attention_context">首次啟動或更新後建議重啟手機\n絕大部分功能更後需要在右上角重啟作用域後生效</string> <string name="matters_needing_attention_context">首次啟動或更新後建議重啟手機\n絕大部分功能更後需要在右上角重啟範圍後生效</string>
<string name="are_you_sure_reboot">確定重啟系統?</string> <string name="are_you_sure_reboot">確定重啟系統?</string>
<string name="cancel">取消</string> <string name="cancel">取消</string>
<string name="are_you_sure_reboot_scope">確定重啟全部作用域</string> <string name="are_you_sure_reboot_scope">確定重啟所有作用範圍</string>
<string name="hide_battery_charging_icon">隱藏 充電 圖標</string> <string name="hide_battery_charging_icon">隱藏充電」圖示</string>
<string name="hide_wifi_standard_icon">隱藏 WIFI標準 圖標</string> <string name="hide_wifi_standard_icon">隱藏WIFI 標準」圖示</string>
<string name="status_bar_time_center">時間</string> <string name="status_bar_time_center">時間</string>
<string name="status_bar_layout_summary">更多狀態欄佈局等待開發中</string> <string name="status_bar_layout_summary">更多狀態列配置等候開發中</string>
<string name="status_bar_layout">狀態欄佈局</string> <string name="status_bar_layout">狀態列配置</string>
<string name="layout_compatibility_mode">兼容模式</string> <string name="layout_compatibility_mode">相容性模式</string>
<string name="left_margin">左邊距 (0: 自動)</string> <string name="left_margin">左邊距 (0自動)</string>
<string name="right_margin">右邊距 (0: 自動)</string> <string name="right_margin">右邊距 (0自動)</string>
<string name="remove_macro_blacklist">去除遊戲自動連招黑名單</string> <string name="layout_compatibility_mode_summary">強制全螢幕配置 (支援所有螢幕凹口或空缺)</string>
<string name="hide_network_speed_splitter">隱藏網速分隔符</string> <string name="remove_macro_blacklist">移除遊戲自動連招黑名單</string>
<string name="hide_network_speed_splitter">隱藏網絡速度分割器</string>
<string name="updater">系統更新</string> <string name="updater">系統更新</string>
<string name="remove_ota_validate">*移除OTA驗證 [實驗性]</string> <string name="remove_ota_validate">*移除 OTA 驗證 [實驗性]</string>
<string name="remove_ota_validate_summary">- 僅支VAB系列使用其餘系列請不要開啟。\n- 無需內測資格即可刷入完整內測包。\n- 擁有內測權限的用戶將無法接收內測更新\n可用於屏蔽系統更新。\n- 跨版本類型升級後,建議清空數據。\n- 不支非官方ROM使用。</string> <string name="remove_ota_validate_summary">- 僅支VAB 系列使用,其餘系列請不要開啟。\n- 無需內測資格即可刷入完整內測包。\n- 擁有內測權限的使用者將無法接收內測更新\n可用於隱藏系統更新。\n- 跨版本類型升級後,建議清除資料。\n- 不支非官方 ROM 使用。</string>
<string name="settings">設定</string> <string name="settings">設定</string>
<string name="show_notification_importance">顯示通知重要程度</string> <string name="show_notification_importance">顯示通知重要程度</string>
<string name="show_notification_importance_summary">顯示 MIUI 12 及之後版本被隱藏的通知重要程度設定</string> <string name="show_notification_importance_summary">顯示 MIUI 12 及之後版本被隱藏的通知重要程度設定</string>
<string name="remove_ad">廣告</string> <string name="remove_ad">移除廣告</string>
<string name="remove_thememanager_ads">拿掉主題壁紙的廣告</string> <string name="remove_thememanager_ads">移除個性主題廣告</string>
<string name="battery_life_function">電池頁面展示當前溫度</string> <string name="battery_life_function">電池頁面顯示目前溫度</string>
<string name="enable_wave_charge_animation">啟用Alpha充電動畫</string> <string name="enable_wave_charge_animation">啟用 MIX Alpha 充電動畫</string>
<string name="max_wallpaper_scale">壁紙縮放比例</string> <string name="max_wallpaper_scale">桌布縮放比例</string>
<string name="def">"默認值:"</string> <string name="def">"預設值: "</string>
<string name="current">前值:</string> <string name="current">前值:</string>
<string name="participate_in_translation">參與翻譯</string> <string name="participate_in_translation">參與翻譯</string>
<string name="participate_in_translation_summary">助我們將這個APP翻譯您的語言</string> <string name="participate_in_translation_summary">助我們將這個應用程式翻譯您的語言</string>
<string name="lock_screen_charging_current">充電時顯示前電流</string> <string name="lock_screen_charging_current">充電時顯示前電流</string>
<string name="current_current">前電流</string> <string name="current_current">前電流</string>
<string name="remove_open_app_confirmation_popup">移除打開應用彈</string> <string name="remove_open_app_confirmation_popup">移除「開啟應用程式」彈出式視</string>
<string name="remove_open_app_confirmation_popup_summary">移除 \"XXX 想要開 XXX\" 的彈窗 。</string> <string name="remove_open_app_confirmation_popup_summary">移除XXX 想要開 XXX」的彈出式視窗</string>
<string name="hide_volume_icon">隱藏 音量 圖標</string> <string name="hide_volume_icon">隱藏音量」圖示</string>
<string name="hide_zen_icon">隱藏 勿擾 圖標</string> <string name="hide_zen_icon">隱藏勿擾」圖示</string>
<string name="hide_icon">隱藏圖</string> <string name="hide_icon">隱藏圖</string>
<string name="double_tap_to_sleep">雙擊鎖定螢幕</string> <string name="double_tap_to_sleep">輕觸兩下鎖定螢幕</string>
<string name="home_double_tap_to_sleep_summary">雙擊空白處鎖定螢幕</string> <string name="home_double_tap_to_sleep_summary">輕觸兩下空白位置鎖定螢幕</string>
<string name="old_quick_settings_panel">舊版快速設定面板</string> <string name="old_quick_settings_panel">舊版快速設定面板</string>
<string name="old_qs_custom_switch">定義行列</string> <string name="old_qs_custom_switch">行列</string>
<string name="qs_custom_columns_unexpanded">未展開</string> <string name="qs_custom_columns_unexpanded">行 (未展開)</string>
<string name="qs_custom_rows"></string> <string name="qs_custom_rows"></string>
<string name="qs_custom_columns"></string> <string name="qs_custom_columns"></string>
<string name="qs_custom_rows_horizontal">(橫屏)</string> <string name="qs_custom_rows_horizontal">(橫向)</string>
<string name="status_bar_dual_row_network_speed">排網路速度</string> <string name="status_bar_dual_row_network_speed">列網絡速度</string>
<string name="status_bar_dual_row_network_speed_summary">上下行網路速度顯示</string> <string name="status_bar_dual_row_network_speed_summary">上下列網絡速度顯示</string>
<string name="status_bar_network_speed">狀態列網速度</string> <string name="status_bar_network_speed">狀態列網速度</string>
<string name="status_bar_network_speed_dual_row_size">大小0不更改</string> <string name="status_bar_network_speed_dual_row_size">大小 (0無變更)</string>
<string name="status_bar_network_speed_dual_row_icon">排圖標</string> <string name="status_bar_network_speed_dual_row_icon">列圖示</string>
<string name="pkg_installer">應用包管理組件</string> <string name="none"></string>
<string name="pkg_installer_summary">禁用頻繁安裝應用檢查</string> <string name="status_bar_network_speed_dual_row_gravity">雙列對齊</string>
<string name="left">置左</string>
<string name="right">置右</string>
<string name="big_mobile_type_icon">大型流動網絡圖示</string>
<string name="show_wifi_standard">顯示 WiFi 標準</string>
<string name="can_notification_slide">強制允許所有通知使用小窗</string>
<string name="battery_percentage_font_size">電量百分比字型大小</string>
<string name="zero_do_no_change">0無變更</string>
<string name="big_mobile_type_icon_size">大型流動網絡圖示大小</string>
<string name="big_mobile_type_icon_bold">大型流動網絡圖示粗體</string>
<string name="big_mobile_type_icon_up_and_down_position">大型流動網絡圖示上下位置</string>
<string name="input_error">輸入錯誤</string>
<string name="range">範圍:</string>
<string name="big_mobile_type_icon_left_and_right_margins">大型流動網絡圖示左右邊距</string>
<string name="cast">投放</string>
<string name="force_support_send_app">強制所有應用程式支援在其他裝置開啟</string>
<string name="status_bar_time_double_line_center_align">雙列置中對齊</string>
<string name="default1">預設值</string>
<string name="clock_center">時鐘置中</string>
<string name="clock_right">時鐘置右</string>
<string name="status_bar_layout_mode">狀態列配置模式</string>
<string name="clock_center_and_icon_left">時鐘置中 + 圖示置左</string>
<string name="maximum_number_of_notification_icons">通知圖示最大數目</string>
<string name="maximum_number_of_notification_dots">通知圓點最大數目</string>
<string name="custom_mobile_type_text">自訂流動網絡類型文字</string>
<string name="custom_mobile_type_text_switch">自訂流動網絡類型文字開關</string>
<string name="downgr">允許降級安裝應用程式</string>
<string name="downgr_summary">允許在已安裝新版的情況下覆寫為舊版本</string>
<string name="authcreak">停用安裝程式簽章驗證</string>
<string name="authcreak_summary">關閉安裝應用程式時的簽名驗證,可以安裝被修改的 APK</string>
<string name="digestCreak">停用 APK 簽章驗證</string>
<string name="digestCreak_summary">允許安裝套件名稱相同但簽章不同的應用程式</string>
<string name="UsePreSig">安裝時始終使用已安裝應用程式的簽章</string>
<string name="UsePreSig_summary">安裝時始終使用已安裝應用程式的簽章\n這非常<b>危險</b>\n僅在真正需要時啟用</string>
<string name="enhancedMode">增強模式</string>
<string name="enhancedMode_summary">可以解決一些應用程式內部的完整性驗證,一般不需要開啟</string>
<string name="rear_display">後方螢幕 (11 Ultra)</string>
<string name="lock_screen_clock_display_seconds">時鐘顯示秒數</string>
<string name="sound">聲音</string>
<string name="media_volume_steps_switch">媒體音量階數</string>
<string name="allow_untrusted_touches">允許不受信任的觸控</string>
<string name="take_effect_after_reboot">重新開機後生效</string>
<string name="media_volume_steps_summary">開啟後可能會導致音量列捲動卡頓或藍牙音量異常</string>
<string name="can_notification_slide_summary">可能無法支援一些使用小米推送 (Mi Push) 推播的通知</string>
<string name="screen_hole_location">螢幕凹口位置</string>
<string name="custom_clock_mode">自訂時鐘模式</string>
<string name="custom_clock_format_geek">時鐘格式</string>
<string name="off">關閉</string>
<string name="center">置中</string>
<string name="left_or_right">左右</string>
<string name="preset">預設</string>
<string name="geek">極客</string>
<string name="do_not_clear_app">防止終止背景應用程式</string>
<string name="do_not_clear_app_summary">可能會增加耗電,建議配合「使 Millet 更加積極」使用不建議配合墓碑、A1 記憶體管理等會強制應用程式進入快取的模組使用</string>
<string name="make_millet_more_aggressive">使 Millet 更加積極</string>
<string name="make_millet_more_aggressive_summary">允許 Millet 在背景應用程式有通知、有服務執行、有處理程序執行的狀況下凍結應用程式。\n不希望被凍結的應用程式可將省電策略設為無限制\n啟用前請先解除安裝墓碑和 NoANR 相關模組。</string>
<string name="make_millet_ignore_active">允許 Millet 凍結使用中的應用程式</string>
<string name="make_millet_ignore_active_summary">非常積極,可能會影響應用程式執行</string>
<string name="pkg_installer">套件安裝程式</string>
<string name="pkg_installer_summary">停用頻繁應用程式安裝檢查</string>
<string name="big_mobile_type_only_show_network_card">大型流動網絡僅會顯示網絡卡</string>
<string name="big_mobile_type_location">大型流動網絡位置</string>
<string name="miuihome_recentview_remove_card_animation">修改卡片動畫</string>
<string name="miuihome_recentview_remove_card_animation_summary">修改在最近任務介面移除卡片的動畫效果</string>
<string name="miuihome_recentwiew_wallpaper_darkening">停用桌布壓暗</string>
<string name="miuihome_recentwiew_wallpaper_darkening_summary">這將會停用進出最近任務介面時的桌布壓暗效果</string>
<string name="miuihome_scroll_icon_name">捲動顯示應用程式名稱</string>
<string name="miuihome_scroll_icon_name_summary">過長的應用程式名稱將會捲動,而不會在多列顯示</string>
<string name="miuihome_shortcut_add_small_window">捷徑選單新增小窗</string>
<string name="miuihome_shortcut_add_small_window_summary">長按桌面圖示以快速開啟小窗應用程式</string>
<string name="miuihome_shortcut_add_small_window_title">小窗應用程式</string>
<string name="click_to_view_use_cases">按一下以檢視案例</string>
<string name="disable_bluetooth_temporarily_off" comment="This function is used to completely close Bluetooth">停用暫時關閉藍牙</string>
</resources> </resources>

View File

@@ -52,7 +52,7 @@
<string name="skip_waiting_time">跳過 5/10 秒警告時間</string> <string name="skip_waiting_time">跳過 5/10 秒警告時間</string>
<string name="unlock_unlimited_cropping">移除裁剪圖片/螢幕截圖的限制</string> <string name="unlock_unlimited_cropping">移除裁剪圖片/螢幕截圖的限制</string>
<string name="hide_slave_wifi_icon">隱藏「WIFI 次要」圖示</string> <string name="hide_slave_wifi_icon">隱藏「WIFI 次要」圖示</string>
<string name="HideLauncherIcon">隱藏桌面圖示</string> <string name="HideLauncherIcon">隱藏桌面圖示</string>
<string name="hide_battery_percentage_icon">隱藏電量 (%)</string> <string name="hide_battery_percentage_icon">隱藏電量 (%)</string>
<string name="hide_battery_icon">隱藏「電池」圖示</string> <string name="hide_battery_icon">隱藏「電池」圖示</string>
<string name="status_bar_clock_format">狀態列時鐘格式</string> <string name="status_bar_clock_format">狀態列時鐘格式</string>
@@ -247,4 +247,5 @@
<string name="miuihome_shortcut_add_small_window_summary">長按桌面圖示以快速開啟小窗應用程式</string> <string name="miuihome_shortcut_add_small_window_summary">長按桌面圖示以快速開啟小窗應用程式</string>
<string name="miuihome_shortcut_add_small_window_title">小窗應用程式</string> <string name="miuihome_shortcut_add_small_window_title">小窗應用程式</string>
<string name="click_to_view_use_cases">按一下以檢視案例</string> <string name="click_to_view_use_cases">按一下以檢視案例</string>
<string name="disable_bluetooth_temporarily_off" comment="This function is used to completely close Bluetooth">停用暫時關閉藍牙</string>
</resources> </resources>

View File

@@ -43,7 +43,7 @@
<string name="github_url">Welcome more developers to participate in the development</string> <string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string> <string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string> <string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13+(Android 12+)</string> <string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string> <string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string> <string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string> <string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
@@ -251,5 +251,4 @@
<string name="miuihome_shortcut_add_small_window_summary">Press and hold the desktop icon to add a quick open window</string> <string name="miuihome_shortcut_add_small_window_summary">Press and hold the desktop icon to add a quick open window</string>
<string name="miuihome_shortcut_add_small_window_title">Small window</string> <string name="miuihome_shortcut_add_small_window_title">Small window</string>
<string name="click_to_view_use_cases">Click to view use cases</string> <string name="click_to_view_use_cases">Click to view use cases</string>
<string name="disable_bluetooth_temporarily_off">Disable bluetooth temporarily off</string>
</resources> </resources>