From a864d4aa32656d3a013b41138dac49365c21656a Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Tue, 31 May 2022 03:49:10 +0800 Subject: [PATCH] Added notify icon custom corner function --- .../com/fankes/miui/notify/data/DataConst.kt | 1 + .../miui/notify/hook/entity/SystemUIHooker.kt | 9 +- .../miui/notify/ui/activity/MainActivity.kt | 19 +++ app/src/main/res/layout/activity_main.xml | 115 +++++++++++++++--- 4 files changed, 123 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/fankes/miui/notify/data/DataConst.kt b/app/src/main/java/com/fankes/miui/notify/data/DataConst.kt index 5e09cf7..c826dfb 100644 --- a/app/src/main/java/com/fankes/miui/notify/data/DataConst.kt +++ b/app/src/main/java/com/fankes/miui/notify/data/DataConst.kt @@ -36,6 +36,7 @@ object DataConst { val ENABLE_NOTIFY_ICON_FIX_NOTIFY = PrefsData("_notify_icon_fix_notify", true) val ENABLE_HOOK_STATUS_ICON_COUNT = PrefsData("_enable_hook_status_icon_count", true) val ENABLE_NOTIFY_ICON_FIX_AUTO = PrefsData("_enable_notify_icon_fix_auto", true) + val NOTIFY_ICON_CORNER = PrefsData("_notify_icon_corner", 15) val NOTIFY_ICON_DATAS = PrefsData("_notify_icon_datas", "") val NOTIFY_ICON_FIX_AUTO_TIME = PrefsData("_notify_icon_fix_auto_time", "07:00") val HOOK_STATUS_ICON_COUNT = PrefsData("_hook_status_icon_count", 5) diff --git a/app/src/main/java/com/fankes/miui/notify/hook/entity/SystemUIHooker.kt b/app/src/main/java/com/fankes/miui/notify/hook/entity/SystemUIHooker.kt index 2400a30..c454332 100644 --- a/app/src/main/java/com/fankes/miui/notify/hook/entity/SystemUIHooker.kt +++ b/app/src/main/java/com/fankes/miui/notify/hook/entity/SystemUIHooker.kt @@ -438,6 +438,9 @@ object SystemUIHooker : YukiBaseHooker() { /** 旧版风格反色 */ val oldStyle = if (context.isNotSystemInDarkMode) 0xFF707070.toInt() else Color.WHITE + /** 通知图标边框圆角大小 */ + val iconCorner = prefs.get(DataConst.NOTIFY_ICON_CORNER) + /** 通知图标原始颜色 */ val iconColor = notifyInstance.notification.color @@ -485,7 +488,8 @@ object SystemUIHooker : YukiBaseHooker() { /** Android 12 设置图标外圈颜色 */ if (isUseAndroid12Style && customIconColor != 0) background = DrawableBuilder() - .rounded() + .rectangle() + .cornerRadius(iconCorner.dp(context)) .solidColor(if (context.isSystemInDarkMode) customIconColor.brighter else customIconColor) .build() /** 设置原生的背景边距 */ @@ -504,7 +508,8 @@ object SystemUIHooker : YukiBaseHooker() { (if (hasIconColor) iconColor else context.systemAccentColor).also { if (isUseAndroid12Style) background = DrawableBuilder() - .rounded() + .rectangle() + .cornerRadius(iconCorner.dp(context)) .solidColor(if (context.isSystemInDarkMode) it.brighter else it) .build() } diff --git a/app/src/main/java/com/fankes/miui/notify/ui/activity/MainActivity.kt b/app/src/main/java/com/fankes/miui/notify/ui/activity/MainActivity.kt index b1367ba..5e2a8fa 100644 --- a/app/src/main/java/com/fankes/miui/notify/ui/activity/MainActivity.kt +++ b/app/src/main/java/com/fankes/miui/notify/ui/activity/MainActivity.kt @@ -26,6 +26,7 @@ package com.fankes.miui.notify.ui.activity import android.content.ComponentName import android.content.pm.PackageManager +import android.widget.SeekBar import androidx.core.view.isGone import androidx.core.view.isVisible import com.fankes.miui.notify.BuildConfig @@ -151,6 +152,8 @@ class MainActivity : BaseActivity() { binding.statusIconCountItem.isVisible = modulePrefs.get(DataConst.ENABLE_MODULE) binding.notifyIconConfigItem.isVisible = modulePrefs.get(DataConst.ENABLE_MODULE) binding.notifyIconFixButton.isVisible = modulePrefs.get(DataConst.ENABLE_NOTIFY_ICON_FIX) + binding.notifyIconCustomCornerItem.isVisible = modulePrefs.get(DataConst.ENABLE_NOTIFY_ICON_FIX) && + modulePrefs.get(DataConst.ENABLE_NOTIFY_ICON_FORCE_APP_ICON).not() binding.notifyIconForceAppIconItem.isVisible = modulePrefs.get(DataConst.ENABLE_NOTIFY_ICON_FIX) binding.notifyIconFixNotifyItem.isVisible = modulePrefs.get(DataConst.ENABLE_NOTIFY_ICON_FIX) binding.notifyIconAutoSyncItem.isVisible = modulePrefs.get(DataConst.ENABLE_NOTIFY_ICON_FIX) @@ -165,6 +168,8 @@ class MainActivity : BaseActivity() { binding.notifyIconForceAppIconSwitch.isChecked = modulePrefs.get(DataConst.ENABLE_NOTIFY_ICON_FORCE_APP_ICON) binding.notifyIconFixNotifySwitch.isChecked = modulePrefs.get(DataConst.ENABLE_NOTIFY_ICON_FIX_NOTIFY) binding.notifyIconAutoSyncSwitch.isChecked = modulePrefs.get(DataConst.ENABLE_NOTIFY_ICON_FIX_AUTO) + binding.notifyIconCustomCornerSeekbar.progress = modulePrefs.get(DataConst.NOTIFY_ICON_CORNER) + binding.notifyIconCustomCornerText.text = "${modulePrefs.get(DataConst.NOTIFY_ICON_CORNER)} dp" binding.statusIconCountText.text = statusBarIconCount.toString() binding.notifyIconAutoSyncText.text = notifyIconAutoSyncTime binding.moduleEnableSwitch.setOnCheckedChangeListener { btn, b -> @@ -205,6 +210,7 @@ class MainActivity : BaseActivity() { if (btn.isPressed.not()) return@setOnCheckedChangeListener modulePrefs.put(DataConst.ENABLE_NOTIFY_ICON_FIX, b) binding.notifyIconFixButton.isVisible = b + binding.notifyIconCustomCornerItem.isVisible = b && modulePrefs.get(DataConst.ENABLE_NOTIFY_ICON_FORCE_APP_ICON).not() binding.notifyIconForceAppIconItem.isVisible = b binding.notifyIconFixNotifyItem.isVisible = b binding.notifyIconAutoSyncItem.isVisible = b @@ -213,6 +219,7 @@ class MainActivity : BaseActivity() { binding.notifyIconForceAppIconSwitch.setOnCheckedChangeListener { btn, b -> if (btn.isPressed.not()) return@setOnCheckedChangeListener fun saveState() { + binding.notifyIconCustomCornerItem.isVisible = b.not() modulePrefs.put(DataConst.ENABLE_NOTIFY_ICON_FORCE_APP_ICON, b) SystemUITool.refreshSystemUI(context = this) } @@ -237,6 +244,18 @@ class MainActivity : BaseActivity() { binding.notifyIconAutoSyncChildItem.isVisible = b SystemUITool.refreshSystemUI(context = this, isRefreshCacheOnly = true) } + binding.notifyIconCustomCornerSeekbar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { + binding.notifyIconCustomCornerText.text = "$progress dp" + } + + override fun onStopTrackingTouch(seekBar: SeekBar) { + modulePrefs.put(DataConst.NOTIFY_ICON_CORNER, seekBar.progress) + SystemUITool.refreshSystemUI(context = this@MainActivity) + } + + override fun onStartTrackingTouch(seekBar: SeekBar?) {} + }) /** 通知图标优化名单按钮点击事件 */ binding.notifyIconFixButton.setOnClickListener { navigate() } /** 设置警告 */ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 11ce51c..8c20cce 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -465,15 +465,13 @@ android:elevation="0dp" android:gravity="center" android:orientation="vertical" - android:paddingLeft="10dp" - android:paddingTop="15dp" - android:paddingRight="10dp"> + android:paddingTop="15dp"> @@ -506,8 +504,8 @@ android:id="@+id/notify_icon_fix_button" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginLeft="3dp" - android:layout_marginRight="3dp" + android:layout_marginLeft="13dp" + android:layout_marginRight="13dp" android:layout_marginBottom="10dp" android:background="@drawable/bg_button_round" android:gravity="center" @@ -520,8 +518,8 @@ + + + + + + + + + + + + + + + +