「Update」

1、换肤SDK兼容 targetSdkVersion >= 29
This commit is contained in:
donghongyu
2024-10-22 20:26:25 +08:00
parent fcd4b3b6a9
commit 37ebe37a25
4 changed files with 32 additions and 18 deletions

View File

@@ -86,9 +86,9 @@ public class MainActivity extends AppCompatActivity {
Skin skin;
if (isCheck) {
skin = new Skin(
"7af685334eb2b6724765dae1597cb214",
"YiXin-skin_v1_2024_10_14.apk",
"https://carlife-static-1255510688.cos.ap-beijing.myqcloud.com/MoGoEagleEye/YiXin-skin_v1_2024_10_14.apk"
"ce67cbe250672c6b44720f0f08f43ca1",
"YiXin-skin_v1_2024_10_15.apk",
"https://carlife-static-1255510688.cos.ap-beijing.myqcloud.com/MoGoEagleEye/YiXin-skin_v1_2024_10_15.apk"
);
//换肤

View File

@@ -6,7 +6,7 @@ ext {
compileSdkVersion: 29,
buildToolsVersion: "29.0.2",
minSdkVersion : 19,
targetSdkVersion : 28,
targetSdkVersion : 29,
]
dependencies = [
kotlinstdlibjdk7 : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${kotlin_version}",

View File

@@ -58,4 +58,4 @@ MOGO_TELEMATIC_VERSION=1.4.7.42
# v2x
MOGO_V2X_VERSION=1.4.7.42
# SKIN
MOGO_SKIN_VERSION=1.4.7.48
MOGO_SKIN_VERSION=1.4.7.49.1-debug

View File

@@ -3,11 +3,11 @@ package com.mogo.skin;
import android.app.Activity;
import android.app.Application;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import androidx.core.view.LayoutInflaterCompat;
import com.mogo.skin.utils.SkinThemeUtils;
@@ -35,20 +35,34 @@ public class SkinActivityLifecycle implements Application.ActivityLifecycleCallb
/* 字体 */
Typeface typeface = SkinThemeUtils.getSkinTypeface(activity);
//更新布局
LayoutInflater layoutInflater = LayoutInflater.from(activity);
//获得Activity的布局加载器
try {
//Android 布局加载器 使用 mFactorySet 标记是否设置过Factory
//如设置过抛出一次
//设置 mFactorySet 标签为false
Field field = LayoutInflater.class.getDeclaredField("mFactorySet");
field.setAccessible(true);
field.setBoolean(layoutInflater, false);
} catch (Exception e) {
e.printStackTrace();
}
SkinLayoutFactory skinLayoutFactory = new SkinLayoutFactory(activity, typeface);
LayoutInflaterCompat.setFactory2(layoutInflater, skinLayoutFactory);
//获得Activity的布局加载器
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
//反射
try {
//Android 布局加载器 使用 mFactorySet 标记是否设置过Factory
//如设置过抛出一次
//设置 mFactorySet 标签为false
Field field = LayoutInflater.class.getDeclaredField("mFactorySet");
field.setAccessible(true);
field.setBoolean(layoutInflater, false);
} catch (Exception e) {
e.printStackTrace();
}
LayoutInflaterCompat.setFactory2(layoutInflater, skinLayoutFactory);
} else {
// 兼容 targetSdkVersion >= 29
try {
Field field = LayoutInflater.class.getDeclaredField("mFactory2");
field.setAccessible(true);
field.set(layoutInflater, skinLayoutFactory);
} catch (Exception e) {
e.printStackTrace();
}
}
//注册观察者
SkinManager.getInstance().addObserver(skinLayoutFactory);
mLayoutFactoryMap.put(activity, skinLayoutFactory);