@@ -71,25 +71,19 @@ private static void processColors(String color, HashMap<String, String> mapColor
7171 @ Override
7272 public void doHook () throws Throwable {
7373 properties = Utils .getProperties (prefs , "custom_css" , "custom_filters" );
74- hookColors ();
75- if (prefs .getBoolean ("lite_mode" , false )) return ;
74+ hookTheme ();
7675 hookWallpaper ();
76+ XposedBridge .hookAllMethods (XposedHelpers .findClass ("android.app.ActivityThread" , classLoader ), "handleRelaunchActivity" , new XC_MethodHook () {
77+ @ Override
78+ protected void beforeHookedMethod (MethodHookParam param ) throws Throwable {
79+ loadAndApplyColors ();
80+ loadAndApplyColorsWallpaper ();
81+ }
82+ });
7783 }
7884
79- private static HashMap <String , String > revertColors (HashMap <String , String > colors ) {
80- HashMap <String , String > newColors = new HashMap <>();
81- for (var c : colors .keySet ()) {
82- var color = colors .get (c );
83- newColors .put (color , c );
84- }
85- return newColors ;
86- }
87-
88- private void hookWallpaper () throws Exception {
89-
90- if (!prefs .getBoolean ("wallpaper" , false ))
91- return ;
92-
85+ private void loadAndApplyColorsWallpaper () {
86+ if (prefs .getBoolean ("lite_mode" , false )) return ;
9387 var customWallpaper = prefs .getBoolean ("wallpaper" , false );
9488
9589 if (customWallpaper || properties .containsKey ("wallpaper" )) {
@@ -107,6 +101,23 @@ private void hookWallpaper() throws Exception {
107101 var wallpaperToolbarAlpha = customWallpaper ? prefs .getInt ("wallpaper_alpha_toolbar" , 30 ) : Utils .tryParseInt (properties .getProperty ("wallpaper_alpha_toolbar" ), 30 );
108102 replaceTransparency (toolbarAlpha , (100 - wallpaperToolbarAlpha ) / 100.0f );
109103 }
104+ }
105+
106+ private static HashMap <String , String > revertColors (HashMap <String , String > colors ) {
107+ HashMap <String , String > newColors = new HashMap <>();
108+ for (var c : colors .keySet ()) {
109+ var color = colors .get (c );
110+ newColors .put (color , c );
111+ }
112+ return newColors ;
113+ }
114+
115+ private void hookWallpaper () throws Exception {
116+
117+ if (!prefs .getBoolean ("wallpaper" , false ))
118+ return ;
119+
120+ loadAndApplyColorsWallpaper ();
110121
111122 var homeActivityClass = WppCore .getHomeActivityClass (classLoader );
112123 XposedHelpers .findAndHookMethod (homeActivityClass , "onCreate" , Bundle .class , new XC_MethodHook () {
@@ -159,7 +170,50 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
159170
160171 }
161172
162- public void hookColors () throws Throwable {
173+
174+ public void hookTheme () throws Throwable {
175+ loadAndApplyColors ();
176+
177+ XposedBridge .hookAllMethods (AssetManager .class , "getResourceValue" , new XC_MethodHook () {
178+ @ Override
179+ protected void afterHookedMethod (MethodHookParam param ) throws Throwable {
180+ var typedValue = (TypedValue ) param .args [2 ];
181+ if (typedValue .type >= TypedValue .TYPE_FIRST_INT
182+ && typedValue .type <= TypedValue .TYPE_LAST_INT ) {
183+ if (typedValue .data == 0 ) return ;
184+ if (checkNotApplyColor (typedValue .data )) return ;
185+ typedValue .data = IColors .getFromIntColor (typedValue .data , IColors .colors );
186+ }
187+ }
188+ });
189+
190+ var resourceImpl = XposedHelpers .findClass ("android.content.res.ResourcesImpl" , classLoader );
191+
192+ XposedBridge .hookAllMethods (resourceImpl , "loadDrawable" , new XC_MethodHook () {
193+ @ Override
194+ protected void afterHookedMethod (MethodHookParam param ) throws Throwable {
195+ var drawable = (Drawable ) param .getResult ();
196+ DrawableColors .replaceColor (drawable , IColors .colors );
197+ }
198+ });
199+
200+ XposedBridge .hookAllMethods (resourceImpl , "loadColorStateList" , new XC_MethodHook () {
201+ @ Override
202+ protected void afterHookedMethod (MethodHookParam param ) throws Throwable {
203+ var colorStateList = (ColorStateList ) param .getResult ();
204+ var mColors = (int []) XposedHelpers .getObjectField (colorStateList , "mColors" );
205+ for (var i = 0 ; i < mColors .length ; i ++) {
206+ mColors [i ] = IColors .getFromIntColor (mColors [i ], IColors .colors );
207+ }
208+ }
209+ });
210+ var intBgHook = new IntBgColorHook ();
211+ findAndHookMethod (Paint .class , "setColor" , int .class , intBgHook );
212+ }
213+
214+ public void loadAndApplyColors () {
215+
216+ IColors .initColors ();
163217
164218 var primaryColorInt = prefs .getInt ("primary_color" , 0 );
165219 var secondaryColorInt = prefs .getInt ("secondary_color" , 0 );
@@ -210,42 +264,6 @@ public void hookColors() throws Throwable {
210264 backgroundColors .put ("ffffff" , "ffffff" );
211265 }
212266
213- XposedBridge .hookAllMethods (AssetManager .class , "getResourceValue" , new XC_MethodHook () {
214- @ Override
215- protected void afterHookedMethod (MethodHookParam param ) throws Throwable {
216- var typedValue = (TypedValue ) param .args [2 ];
217- if (typedValue .type >= TypedValue .TYPE_FIRST_INT
218- && typedValue .type <= TypedValue .TYPE_LAST_INT ) {
219- if (typedValue .data == 0 ) return ;
220- if (checkNotApplyColor (typedValue .data )) return ;
221- typedValue .data = IColors .getFromIntColor (typedValue .data , IColors .colors );
222- }
223- }
224- });
225-
226- var resourceImpl = XposedHelpers .findClass ("android.content.res.ResourcesImpl" , classLoader );
227-
228- XposedBridge .hookAllMethods (resourceImpl , "loadDrawable" , new XC_MethodHook () {
229- @ Override
230- protected void afterHookedMethod (MethodHookParam param ) throws Throwable {
231- var drawable = (Drawable ) param .getResult ();
232- DrawableColors .replaceColor (drawable , IColors .colors );
233- }
234- });
235-
236- XposedBridge .hookAllMethods (resourceImpl , "loadColorStateList" , new XC_MethodHook () {
237- @ Override
238- protected void afterHookedMethod (MethodHookParam param ) throws Throwable {
239- var colorStateList = (ColorStateList ) param .getResult ();
240- var mColors = (int []) XposedHelpers .getObjectField (colorStateList , "mColors" );
241- for (var i = 0 ; i < mColors .length ; i ++) {
242- mColors [i ] = IColors .getFromIntColor (mColors [i ], IColors .colors );
243- }
244- }
245- });
246- var intBgHook = new IntBgColorHook ();
247- findAndHookMethod (Paint .class , "setColor" , int .class , intBgHook );
248-
249267 }
250268
251269 private void replaceTransparency (HashMap <String , String > wallpaperColors , float mAlpha ) {
0 commit comments