diff --git a/app/build.gradle b/app/build.gradle index 4a9dd4dfa3..55c46bc720 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -318,6 +318,13 @@ dependencies { apply from: "./functions/socketpush.gradle" apply from: "./functions/gpssimulator.gradle" apply from: "./functions/leftpanel.gradle" + + // 换肤功能 + implementation 'skin.support:skin-support:4.0.5' // skin-support + implementation 'skin.support:skin-support-appcompat:4.0.5' // skin-support 基础控件支持 + implementation 'skin.support:skin-support-design:4.0.5' // skin-support-design material design 控件支持[可选] + implementation 'skin.support:skin-support-cardview:4.0.5' // skin-support-cardview CardView 控件支持[可选] + implementation 'skin.support:skin-support-constraint-layout:4.0.5' // skin-support-constraint-layout ConstraintLayout 控件支持[可选] } android.applicationVariants.all { variant -> diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 6c241e16fd..6d846ff9e2 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -3,7 +3,11 @@ package com.mogo.launcher; import android.content.Context; import android.content.Intent; import android.text.TextUtils; +import android.util.AttributeSet; import android.util.Log; +import android.view.View; + +import androidx.annotation.NonNull; import com.alibaba.android.arouter.launcher.ARouter; import com.auto.zhidao.logsdk.CrashSystem; @@ -33,6 +37,15 @@ import com.zhidao.boot.persistent.lib.PersistentManager; import com.zhidao.mogo.module.left.panel.LeftPanelConst; import com.zhidao.mogo.tanlu.api.TanluApiConst; +import java.lang.reflect.Constructor; + +import skin.support.SkinCompatManager; +import skin.support.app.SkinAppCompatViewInflater; +import skin.support.app.SkinCardViewInflater; +import skin.support.app.SkinLayoutInflater; +import skin.support.constraint.app.SkinConstraintViewInflater; +import skin.support.design.app.SkinMaterialViewInflater; + /** * @author congtaowang * @since 2019-12-18 @@ -85,6 +98,8 @@ public class MogoApplication extends AbsMogoApplication { Intent intent = new Intent( this, MogoMainService.class ); startService( intent ); } + + initSkinStrategy(); Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); } @@ -102,6 +117,35 @@ public class MogoApplication extends AbsMogoApplication { DebugConfig.setRoadEventAnimated( BuildConfig.ROAD_EVENT_ANIMATED ); } + @Override + protected void asyncInitImpl() { + super.asyncInitImpl(); + } + + private void initSkinStrategy(){ + SkinCompatManager.withoutActivity(this) + .addInflater(new SkinAppCompatViewInflater()) // 基础控件换肤初始化 + .addInflater(new SkinMaterialViewInflater()) // material design 控件换肤初始化[可选] + .addInflater(new SkinConstraintViewInflater()) // ConstraintLayout 控件换肤初始化[可选] + .addInflater(new SkinCardViewInflater()) // CardView v7 控件换肤初始化[可选] + .addInflater( ( context, name, attrs ) -> { + View view = null; + try { + Class clazz = Class.forName( name ); + Constructor constructor = clazz.getConstructor( Context.class, AttributeSet.class ); + constructor.setAccessible( true ); + view = constructor.newInstance( constructor, attrs ); + } catch ( Exception e ) { + e.printStackTrace(); + } + return view; + } ) + .setSkinAllActivityEnable(true) + .setSkinStatusBarColorEnable(false) // 关闭状态栏换肤,默认打开[可选] + .setSkinWindowBackgroundEnable(false) // 关闭windowBackground换肤,默认打开[可选] + .loadSkin(); + } + @Override protected void init() { super.init(); diff --git a/foudations/mogo-commons/build.gradle b/foudations/mogo-commons/build.gradle index 0f2fc4036c..1dd693e44e 100644 --- a/foudations/mogo-commons/build.gradle +++ b/foudations/mogo-commons/build.gradle @@ -51,6 +51,11 @@ dependencies { } api 'org.greenrobot:eventbus:3.1.1' + api 'skin.support:skin-support:4.0.5' // skin-support + api 'skin.support:skin-support-appcompat:4.0.5' // skin-support 基础控件支持 + api 'skin.support:skin-support-design:4.0.5' // skin-support-design material design 控件支持[可选] + api 'skin.support:skin-support-cardview:4.0.5' // skin-support-cardview CardView 控件支持[可选] + api 'skin.support:skin-support-constraint-layout:4.0.5' // skin-support-constraint-layout ConstraintLayout 控件支持[可选] } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java index c31eb8b869..edace33ae6 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java @@ -10,6 +10,8 @@ import android.view.WindowManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatDelegate; +import androidx.appcompat.app.SkinAppCompatDelegateImpl; import com.mogo.commons.debug.DebugConfig; import com.mogo.utils.SoftKeyBoardJobber; @@ -89,4 +91,10 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > > } mPresenter = null; } + + @NonNull + @Override + public AppCompatDelegate getDelegate() { + return SkinAppCompatDelegateImpl.get(this, this); + } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 12d74cddc5..dada71998b 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -651,7 +651,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, try { return drawMapMarkerImpl( markerShowEntity, zIndex ); } catch ( Exception e ) { - e.printStackTrace(); + Logger.e( TAG, e, "drawMapMarker" ); return null; } }