「Update」
1、换肤SDK兼容 targetSdkVersion >= 29
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user