feat: shrink padding of notification icon on HyperOS

This commit is contained in:
2023-11-02 09:57:35 +08:00
parent 19b2efbb83
commit 3d7e4d8825

View File

@@ -46,6 +46,7 @@ import androidx.core.graphics.drawable.toBitmap
import androidx.core.graphics.drawable.toDrawable import androidx.core.graphics.drawable.toDrawable
import androidx.core.view.children import androidx.core.view.children
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.setPadding
import com.fankes.miui.notify.R import com.fankes.miui.notify.R
import com.fankes.miui.notify.bean.IconDataBean import com.fankes.miui.notify.bean.IconDataBean
import com.fankes.miui.notify.const.PackageName import com.fankes.miui.notify.const.PackageName
@@ -60,6 +61,7 @@ import com.fankes.miui.notify.utils.factory.delayedRun
import com.fankes.miui.notify.utils.factory.dp import com.fankes.miui.notify.utils.factory.dp
import com.fankes.miui.notify.utils.factory.dpFloat import com.fankes.miui.notify.utils.factory.dpFloat
import com.fankes.miui.notify.utils.factory.drawableOf import com.fankes.miui.notify.utils.factory.drawableOf
import com.fankes.miui.notify.utils.factory.isMIOS
import com.fankes.miui.notify.utils.factory.isNotSystemInDarkMode import com.fankes.miui.notify.utils.factory.isNotSystemInDarkMode
import com.fankes.miui.notify.utils.factory.isSystemInDarkMode import com.fankes.miui.notify.utils.factory.isSystemInDarkMode
import com.fankes.miui.notify.utils.factory.isUpperOfAndroidS import com.fankes.miui.notify.utils.factory.isUpperOfAndroidS
@@ -426,13 +428,15 @@ object SystemUIHooker : YukiBaseHooker() {
* @param iconView 通知图标实例 * @param iconView 通知图标实例
* @param isExpanded 通知是否展开 - 可做最小化通知处理 - 默认:是 * @param isExpanded 通知是否展开 - 可做最小化通知处理 - 默认:是
* @param isUseMaterial3Style 是否使用 Material 3 通知图标风格 - 默认跟随系统版本决定 * @param isUseMaterial3Style 是否使用 Material 3 通知图标风格 - 默认跟随系统版本决定
* @param isMiuiPanel 是否来自 MIUI 自己的通知面板
*/ */
private fun compatNotifyIcon( private fun compatNotifyIcon(
context: Context, context: Context,
nf: StatusBarNotification?, nf: StatusBarNotification?,
iconView: ImageView, iconView: ImageView,
isExpanded: Boolean = true, isExpanded: Boolean = true,
isUseMaterial3Style: Boolean = isUpperOfAndroidS isUseMaterial3Style: Boolean = isUpperOfAndroidS,
isMiuiPanel: Boolean = false
) = runInSafe(msg = "compatNotifyIcon") { ) = runInSafe(msg = "compatNotifyIcon") {
/** /**
* 设置默认通知图标 * 设置默认通知图标
@@ -530,8 +534,12 @@ object SystemUIHooker : YukiBaseHooker() {
.cornerRadius(ConfigData.notifyIconCornerSize.dp(context)) .cornerRadius(ConfigData.notifyIconCornerSize.dp(context))
.solidColor(if (context.isSystemInDarkMode) customIconColor.brighterColor else customIconColor) .solidColor(if (context.isSystemInDarkMode) customIconColor.brighterColor else customIconColor)
.build() .build()
when {
/** 缩小 HyperOS 的通知图标 */
isMIOS && isMiuiPanel -> setPadding(7.dp(context))
/** 设置原生的背景边距 */ /** 设置原生的背景边距 */
if (isUseMaterial3Style) setPadding(4.dp(context), 4.dp(context), 4.dp(context), 4.dp(context)) isUseMaterial3Style -> setPadding(4.dp(context))
}
} }
else -> { else -> {
/** 重新设置图标 - 防止系统更改它 */ /** 重新设置图标 - 防止系统更改它 */
@@ -551,8 +559,12 @@ object SystemUIHooker : YukiBaseHooker() {
.solidColor(if (context.isSystemInDarkMode) it.brighterColor else it) .solidColor(if (context.isSystemInDarkMode) it.brighterColor else it)
.build() .build()
} }
when {
/** 缩小 HyperOS 的通知图标 */
isMIOS && isMiuiPanel -> setPadding(7.dp(context))
/** 设置原生的背景边距 */ /** 设置原生的背景边距 */
if (isUseMaterial3Style) setPadding(4.dp(context), 4.dp(context), 4.dp(context), 4.dp(context)) isUseMaterial3Style -> setPadding(4.dp(context))
}
} else setDefaultNotifyIcon(notifyInstance.compatPushingIcon(context, iconDrawable)) } else setDefaultNotifyIcon(notifyInstance.compatPushingIcon(context, iconDrawable))
} }
} }
@@ -938,7 +950,8 @@ object SystemUIHooker : YukiBaseHooker() {
context = context, context = context,
nf = instance.getRowPair().second.getSbn(), nf = instance.getRowPair().second.getSbn(),
iconView = this, iconView = this,
isUseMaterial3Style = true isUseMaterial3Style = true,
isMiuiPanel = true
) )
} }
} }
@@ -951,9 +964,15 @@ object SystemUIHooker : YukiBaseHooker() {
param(BooleanType) param(BooleanType)
}.hook().after { }.hook().after {
field { name = "mAppIcon" }.get(instance).cast<ImageView>()?.apply { field { name = "mAppIcon" }.get(instance).cast<ImageView>()?.apply {
compatNotifyIcon(context, NotificationChildrenContainerClass.field { compatNotifyIcon(
context = context,
nf = NotificationChildrenContainerClass.field {
name = "mContainingNotification" name = "mContainingNotification"
}.get(instance).any()?.getSbn(), iconView = this, isUseMaterial3Style = true) }.get(instance).any()?.getSbn(),
iconView = this,
isUseMaterial3Style = true,
isMiuiPanel = true
)
} }
} }
} }