修复A13中大移动类型图标

This commit is contained in:
LittleTurtle2333
2023-02-14 22:36:02 +08:00
parent e63b9a861d
commit 5c12c0aa56

View File

@@ -9,10 +9,7 @@ import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookAfter
import com.github.kyuubiran.ezxhelper.utils.hookReturnConstant
import com.github.kyuubiran.ezxhelper.utils.putObject
import com.github.kyuubiran.ezxhelper.utils.*
import com.lt2333.simplicitytools.utils.XSPUtils
import com.lt2333.simplicitytools.utils.hasEnable
import com.lt2333.simplicitytools.utils.xposed.base.HookRegister
@@ -27,97 +24,50 @@ object StatusBarBigMobileTypeIconForT : HookRegister() {
private val size = XSPUtils.getFloat("big_mobile_type_icon_size", 12.5f)
override fun init() = hasEnable("big_mobile_type_icon") {
// TODO: Android13大移动类型图标不可用
//使网络类型单独显示
findMethod("com.android.systemui.statusbar.StatusBarMobileView"){
name == "applyMobileState"
}.hookBefore {
val mobileIconState = it.args[0]
mobileIconState.putObject("showMobileDataTypeSingle",true)
}
findMethod("com.android.systemui.statusbar.StatusBarMobileView") {
name == "init"
}.hookAfter { param ->
val statusBarMobileView = param.thisObject as ViewGroup
}.hookAfter {
val statusBarMobileView = it.thisObject as ViewGroup
val context: Context = statusBarMobileView.context
val res: Resources = context.resources
//获取组件
val mobileContainerLeftId: Int =
res.getIdentifier("mobile_container_left", "id", "com.android.systemui")
val mobileContainerLeft =
statusBarMobileView.findViewById<ViewGroup>(mobileContainerLeftId)
val mobileTypeId: Int =
res.getIdentifier("mobile_type", "id", "com.android.systemui")
val mobileType = statusBarMobileView.findViewById<TextView>(mobileTypeId)
val mobileGroupId: Int =
res.getIdentifier("mobile_group", "id", "com.android.systemui")
val mobileGroup =
statusBarMobileView.findViewById<ViewGroup>(mobileGroupId)
val mobileLeftMobileInoutId: Int = res.getIdentifier(
"mobile_left_mobile_inout",
"id",
"com.android.systemui"
)
val mobileLeftMobileInout =
statusBarMobileView.findViewById<ImageView>(mobileLeftMobileInoutId)
val mobileTypeSingleId: Int =
res.getIdentifier("mobile_type_single", "id", "com.android.systemui")
val mobileTypeSingle = statusBarMobileView.findViewById<TextView>(mobileTypeSingleId)
//更改顺序
mobileGroup.removeView(mobileTypeSingle)
mobileGroup.addView(mobileTypeSingle)
mobileGroup.removeView(mobileContainerLeft)
mobileGroup.addView(mobileContainerLeft)
//获取插入位置
val mobileContainerRightId: Int = res.getIdentifier(
"mobile_container_right",
"id",
"com.android.systemui"
)
val mobileContainerRight =
statusBarMobileView.findViewById<ViewGroup>(mobileContainerRightId)
val rightParentLayout = mobileContainerRight.parent as ViewGroup
val mobileContainerRightIndex =
rightParentLayout.indexOfChild(mobileContainerRight)
//创建新布局
val newLinearLayoutLP = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
val newLinearlayout = LinearLayout(context).also {
it.layoutParams = newLinearLayoutLP
it.id = mobileContainerLeftId
it.setPadding(leftAndRightMargin, 0, leftAndRightMargin, 0)
//更改样式
mobileTypeSingle.textSize = size
if (isBold){
mobileTypeSingle.typeface = Typeface.DEFAULT_BOLD
}
param.thisObject.putObject("mMobileLeftContainer", newLinearlayout)
rightParentLayout.addView(
newLinearlayout,
mobileContainerRightIndex
)
//将组件插入新的布局
(mobileType.parent as ViewGroup).removeView(mobileType)
(mobileLeftMobileInout.parent as ViewGroup).removeView(mobileLeftMobileInout)
(mobileContainerLeft.parent as ViewGroup).removeView(mobileContainerLeft)
newLinearlayout.addView(mobileType) //类型
val mobileTypeLp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
).also {
it.gravity = Gravity.CENTER_VERTICAL
it.topMargin = upAndDownPosition
}
mobileType.also {
it.setTextSize(TypedValue.COMPLEX_UNIT_DIP, size)
if (isBold) {
it.typeface = Typeface.DEFAULT_BOLD
}
it.layoutParams = mobileTypeLp
}
newLinearlayout.addView(mobileLeftMobileInout) //箭头
val mobileLeftMobileInoutLp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
mobileLeftMobileInout.also {
it.layoutParams = mobileLeftMobileInoutLp
}
//屏蔽更新布局
findMethod("com.android.systemui.statusbar.StatusBarMobileView") {
name == "updateMobileTypeLayout" && parameterTypes[0] == String::class.java
}.hookReturnConstant(null)
mobileTypeSingle.setPadding(leftAndRightMargin, upAndDownPosition,
leftAndRightMargin,0)
}
}