Skip to content

Commit 3bb842e

Browse files
committed
+ Support Alipay 10.1.38
1 parent 4c46874 commit 3bb842e

File tree

2 files changed

+76
-1
lines changed

2 files changed

+76
-1
lines changed

app/src/main/java/com/yyxx/wechatfp/util/ViewUtil.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,13 @@ public static Drawable genBackgroundDefaultDrawable(int defaultColor) {
137137
return statesDrawable;
138138
}
139139

140+
public static Drawable genBackgroundDefaultDrawable(int defaultColor, int pressedColor) {
141+
StateListDrawable statesDrawable = new StateListDrawable();
142+
statesDrawable.addState(new int[]{android.R.attr.state_pressed}, new ColorDrawable(pressedColor));
143+
statesDrawable.addState(new int[]{}, new ColorDrawable(defaultColor));
144+
return statesDrawable;
145+
}
146+
140147
@Nullable
141148
public static View findViewByName(Activity activity, String packageName, String... names) {
142149
Resources resources = activity.getResources();

app/src/main/java/com/yyxx/wechatfp/xposed/plugin/XposedAlipayPlugin.java

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import android.widget.EditText;
2020
import android.widget.ImageView;
2121
import android.widget.LinearLayout;
22+
import android.widget.ListView;
2223
import android.widget.TextView;
2324
import android.widget.Toast;
2425

@@ -82,7 +83,9 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
8283
if (BuildConfig.DEBUG) {
8384
L.d("activity", activity, "clz", activityClzName);
8485
}
85-
if (activityClzName.contains(".UserSettingActivity")) {
86+
if (activityClzName.contains(".MySettingActivity")) {
87+
Task.onMain(100, () -> doSettingsMenuInject_10_1_38(activity));
88+
} else if (activityClzName.contains(".UserSettingActivity")) {
8689
Task.onMain(100, () -> doSettingsMenuInject(activity));
8790
} else if (activityClzName.contains(".MspContainerActivity")
8891
|| activityClzName.contains(".FlyBirdWindowActivity")) {
@@ -314,6 +317,71 @@ public void showFingerPrintDialog(final Activity activity) {
314317
} catch (OutOfMemoryError e) {
315318
}
316319
}
320+
321+
private void doSettingsMenuInject_10_1_38(final Activity activity) {
322+
int listViewId = activity.getResources().getIdentifier("setting_list", "id", "com.alipay.android.phone.openplatform");
323+
324+
ListView listView = activity.findViewById(listViewId);
325+
326+
View lineTopView = new View(activity);
327+
lineTopView.setBackgroundColor(0xFFEEEEEE);
328+
329+
LinearLayout itemHlinearLayout = new LinearLayout(activity);
330+
itemHlinearLayout.setOrientation(LinearLayout.HORIZONTAL);
331+
itemHlinearLayout.setWeightSum(1);
332+
itemHlinearLayout.setBackground(ViewUtil.genBackgroundDefaultDrawable(Color.WHITE, 0xFFD9D9D9));
333+
itemHlinearLayout.setGravity(Gravity.CENTER_VERTICAL);
334+
itemHlinearLayout.setClickable(true);
335+
itemHlinearLayout.setOnClickListener(view -> new SettingsView(activity).showInDialog());
336+
337+
int defHPadding = DpUtil.dip2px(activity, 15);
338+
339+
TextView itemNameText = new TextView(activity);
340+
StyleUtil.apply(itemNameText);
341+
itemNameText.setText(Lang.getString(R.id.app_settings_name));
342+
itemNameText.setGravity(Gravity.CENTER_VERTICAL);
343+
itemNameText.setPadding(defHPadding, 0, 0, 0);
344+
itemNameText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, StyleUtil.TEXT_SIZE_BIG);
345+
346+
TextView itemSummerText = new TextView(activity);
347+
StyleUtil.apply(itemSummerText);
348+
itemSummerText.setText(BuildConfig.VERSION_NAME);
349+
itemSummerText.setGravity(Gravity.CENTER_VERTICAL);
350+
itemSummerText.setPadding(0, 0, defHPadding, 0);
351+
itemSummerText.setTextColor(0xFF999999);
352+
353+
//try use Alipay style
354+
try {
355+
View settingsView = ViewUtil.findViewByName(activity, "com.alipay.mobile.antui", "item_left_text");
356+
L.d("settingsView", settingsView);
357+
if (settingsView instanceof TextView) {
358+
TextView settingsTextView = (TextView) settingsView;
359+
float scale = itemNameText.getTextSize() / settingsTextView.getTextSize();
360+
itemNameText.setTextSize(TypedValue.COMPLEX_UNIT_PX, settingsTextView.getTextSize());
361+
itemSummerText.setTextSize(TypedValue.COMPLEX_UNIT_PX, itemSummerText.getTextSize() / scale);
362+
itemNameText.setTextColor(settingsTextView.getCurrentTextColor());
363+
}
364+
} catch (Exception e) {
365+
L.e(e);
366+
}
367+
368+
itemHlinearLayout.addView(itemNameText, new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT, 1));
369+
itemHlinearLayout.addView(itemSummerText, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT));
370+
371+
View lineBottomView = new View(activity);
372+
lineBottomView.setBackgroundColor(0xFFEEEEEE);
373+
374+
LinearLayout rootLinearLayout = new LinearLayout(activity);
375+
rootLinearLayout.setOrientation(LinearLayout.VERTICAL);
376+
rootLinearLayout.addView(lineTopView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1));
377+
rootLinearLayout.addView(itemHlinearLayout, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DpUtil.dip2px(activity, 45)));
378+
LinearLayout.LayoutParams lineParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1);
379+
lineParams.bottomMargin = DpUtil.dip2px(activity, 20);
380+
rootLinearLayout.addView(lineBottomView, lineParams);
381+
382+
listView.addHeaderView(rootLinearLayout);
383+
}
384+
317385
private void doSettingsMenuInject(final Activity activity) {
318386
int logout_id = activity.getResources().getIdentifier("logout", "id", "com.alipay.android.phone.openplatform");
319387

0 commit comments

Comments
 (0)