新增大移动类型图标

This commit is contained in:
乌堆小透明
2022-03-21 17:55:16 +08:00
parent f2df033393
commit 8bcb89b04d
5 changed files with 131 additions and 12 deletions

View File

@@ -498,6 +498,14 @@ class SettingsActivity : MIUIActivity() {
menuButton.visibility = View.VISIBLE
return ArrayList<BaseView>().apply {
add(TitleTextV(resId = R.string.statusbar))
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.big_mobile_type_icon
),
SwitchV("big_mobile_type_icon")
)
)
add(
TextSummaryWithSwitchV(
TextSummaryV(

View File

@@ -58,6 +58,8 @@ class SystemUI : IXposedHookLoadPackage {
OldQSCustom().handleLoadPackage(lpparam)
//双排网速
DoubleLineNetworkSpeed().handleLoadPackage(lpparam)
StatusBarBigMobileTypeIcon().handleLoadPackage(lpparam)
}
}

View File

@@ -3,29 +3,54 @@ package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.getObjectField
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideMobileTypeIcon : IXposedHookLoadPackage {
val isBigType=XSPUtils.getBoolean("big_mobile_type_icon", false)
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val iconState = "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState"
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "initViewState", iconState) {
hasEnable("hide_mobile_type_icon") {
(it.thisObject.getObjectField("mMobileType") as TextView).visibility = View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeImage") as ImageView).visibility = View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeSingle") as TextView).visibility = View.INVISIBLE
val iconState =
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState"
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(
lpparam.classLoader,
"initViewState",
iconState
) {
hideMobileTypeIcon(it)
}
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(
lpparam.classLoader,
"updateState",
iconState
) {
hideMobileTypeIcon(it)
}
}
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "updateState", iconState) {
fun hideMobileTypeIcon(it: XC_MethodHook.MethodHookParam) {
hasEnable("hide_mobile_type_icon") {
(it.thisObject.getObjectField("mMobileType") as TextView).visibility = View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeImage") as ImageView).visibility = View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeSingle") as TextView).visibility = View.INVISIBLE
if (isBigType) {
(it.thisObject.getObjectField("mMobileType") as TextView).visibility =
View.GONE
(it.thisObject.getObjectField("mMobileTypeImage") as ImageView).visibility =
View.GONE
(it.thisObject.getObjectField("mMobileTypeSingle") as TextView).visibility =
View.GONE
} else {
(it.thisObject.getObjectField("mMobileType") as TextView).visibility =
View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeImage") as ImageView).visibility =
View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeSingle") as TextView).visibility =
View.INVISIBLE
}
}
}
}

View File

@@ -0,0 +1,83 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.content.Context
import android.content.res.Resources
import android.view.Gravity
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import cn.fkj233.ui.activity.dp2px
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class StatusBarBigMobileTypeIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
hasEnable("big_mobile_type_icon") {
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(
lpparam.classLoader,
"init"
) {
val StatusBarMobileView = it.thisObject as ViewGroup
val context: Context = StatusBarMobileView.context
val res: Resources = context.resources
val mobile_container_left_ID: Int =
res.getIdentifier("mobile_container_left", "id", "com.android.systemui")
val mobile_left_mobile_inout_ID: Int = res.getIdentifier(
"mobile_left_mobile_inout",
"id",
"com.android.systemui"
)
val mobile_container_right_ID: Int = res.getIdentifier(
"mobile_container_right",
"id",
"com.android.systemui"
)
val mobile_type_ID: Int =
res.getIdentifier("mobile_type", "id", "com.android.systemui")
val TextAppearance_StatusBar_Carrier_ID: Int = res.getIdentifier(
"TextAppearance.StatusBar.Carrier",
"style",
"com.android.systemui"
)
//获取mobile_container_left并在父布局中删除
val mobile_container_left =
StatusBarMobileView.findViewById<ViewGroup>(mobile_container_left_ID)
val mobile_container_left_fl =
mobile_container_left.layoutParams as LinearLayout.LayoutParams
(mobile_container_left.parent as ViewGroup).removeView(mobile_container_left)
//获取mobile_container_right的父布局并在mobile_container_right前添加mobile_container_left
val mobile_container_right =
StatusBarMobileView.findViewById<ViewGroup>(mobile_container_right_ID)
val RightParentLayout = mobile_container_right.parent as ViewGroup
val mobile_container_right_Index =
RightParentLayout.indexOfChild(mobile_container_left)
RightParentLayout.addView(
mobile_container_left,
mobile_container_right_Index - 1
)
mobile_container_left_fl.topMargin = dp2px(context, 3f)
mobile_container_left.layoutParams = mobile_container_left_fl
val mobile_type = StatusBarMobileView.findViewById<TextView>(mobile_type_ID)
mobile_type.setTextAppearance(TextAppearance_StatusBar_Carrier_ID)
val mobile_type_fl = mobile_type.layoutParams as FrameLayout.LayoutParams
mobile_type_fl.width = dp2px(context, 30f)
mobile_type_fl.gravity = Gravity.CENTER or Gravity.START or Gravity.TOP
mobile_type.layoutParams = mobile_type_fl
val mobile_left_mobile_inout =
StatusBarMobileView.findViewById<ImageView>(mobile_left_mobile_inout_ID)
val mobile_left_mobile_inout_fl =
mobile_left_mobile_inout.layoutParams as FrameLayout.LayoutParams
mobile_left_mobile_inout_fl.width = dp2px(context, 8f)
mobile_left_mobile_inout_fl.marginStart = dp2px(context, 16f)
mobile_left_mobile_inout_fl.bottomMargin = dp2px(context, 3f)
mobile_left_mobile_inout.layoutParams = mobile_left_mobile_inout_fl
}
}
}
}

View File

@@ -180,4 +180,5 @@
<string name="status_bar_network_speed_dual_row_gravity">Dual row align</string>
<string name="left">Left</string>
<string name="right">Right</string>
<string name="big_mobile_type_icon">Big Mobile Type Icon</string>
</resources>