From 0307c7c6fd4fc00c67d5c3f409a365678d56f050 Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Thu, 24 Mar 2022 01:39:13 +0800 Subject: [PATCH] Merge code --- .../fankes/coloros/notify/hook/HookEntry.kt | 24 ++++++++++++------- .../notify/utils/factory/FunctionFactory.kt | 24 +++---------------- 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/fankes/coloros/notify/hook/HookEntry.kt b/app/src/main/java/com/fankes/coloros/notify/hook/HookEntry.kt index a52cf61..cc9fa16 100644 --- a/app/src/main/java/com/fankes/coloros/notify/hook/HookEntry.kt +++ b/app/src/main/java/com/fankes/coloros/notify/hook/HookEntry.kt @@ -27,6 +27,7 @@ import android.content.Context import android.content.Intent import android.graphics.Bitmap import android.graphics.Color +import android.graphics.Outline import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable import android.graphics.drawable.Icon @@ -34,6 +35,7 @@ import android.graphics.drawable.VectorDrawable import android.service.notification.StatusBarNotification import android.util.ArraySet import android.view.View +import android.view.ViewOutlineProvider import android.widget.ImageView import androidx.core.graphics.drawable.toBitmap import com.fankes.coloros.notify.application.CNNApplication.Companion.MODULE_PACKAGE_NAME @@ -279,13 +281,6 @@ class HookEntry : YukiHookXposedInitProxy { }.get().invoke(context)).invoke(drawable) ?: false } - /** - * 处理为圆角图标 - * @return [Drawable] - */ - private fun Drawable.rounded(context: Context) = - safeOf(default = this) { BitmapDrawable(context.resources, toBitmap().round(20.dpFloat(context))) } - /** * 自动适配状态栏、通知栏自定义小图标 * @param isGrayscaleIcon 是否为灰度图标 @@ -345,6 +340,8 @@ class HookEntry : YukiHookXposedInitProxy { compatCustomIcon(isGrayscaleIcon, packageName).also { customPair -> when { customPair.first != null || isGrayscaleIcon -> iconView.apply { + /** 设置不要裁切到边界 */ + clipToOutline = false /** 重新设置图标 */ setImageBitmap(customPair.first ?: drawable.toBitmap()) @@ -380,7 +377,18 @@ class HookEntry : YukiHookXposedInitProxy { } else -> iconView.apply { /** 重新设置图标 */ - setImageDrawable(drawable.rounded(context)) + setImageDrawable(drawable) + /** 设置裁切到边界 */ + clipToOutline = true + /** 设置一个圆角轮廓裁切 */ + outlineProvider = object : ViewOutlineProvider() { + override fun getOutline(view: View, out: Outline) { + out.setRoundRect( + 0, 0, + view.width, view.height, 3.dpFloat(context) + ) + } + } /** 清除图标间距 */ setPadding(0, 0, 0, 0) /** 清除背景 */ diff --git a/app/src/main/java/com/fankes/coloros/notify/utils/factory/FunctionFactory.kt b/app/src/main/java/com/fankes/coloros/notify/utils/factory/FunctionFactory.kt index 01863d2..bf65583 100644 --- a/app/src/main/java/com/fankes/coloros/notify/utils/factory/FunctionFactory.kt +++ b/app/src/main/java/com/fankes/coloros/notify/utils/factory/FunctionFactory.kt @@ -34,7 +34,9 @@ import android.content.Intent import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.content.res.Configuration -import android.graphics.* +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Color import android.net.ConnectivityManager import android.net.Uri import android.os.Build @@ -271,26 +273,6 @@ val ByteArray.bitmap: Bitmap get() = BitmapFactory.decodeByteArray(this, 0, size */ val String.bitmap: Bitmap get() = unbase64.bitmap -/** - * 圆角图片 - * @param radius 圆角度 - * @return [Bitmap] 圆角后的位图 - 失败会返回处理之前的位图 - */ -fun Bitmap.round(radius: Float): Bitmap = safeOf(default = this) { - Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888).also { out -> - Canvas(out).also { canvas -> - Paint().also { paint -> - paint.isAntiAlias = true - canvas.drawARGB(0, 0, 0, 0) - paint.color = Color.WHITE - canvas.drawRoundRect(RectF(Rect(0, 0, width, height)), radius, radius, paint) - paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN) - canvas.drawBitmap(this, Rect(0, 0, width, height), Rect(0, 0, width, height), paint) - } - } - } -} - /** * 获取系统 Prop 值 * @param key Key