From 7ab9116e725fad27730c668d11ecb3ccabb0e18a Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 31 Oct 2022 19:31:22 +0800 Subject: [PATCH] fix status bar problem --- .../core/function/hmi/ui/MoGoHmiFragment.kt | 63 +++---------------- .../function/hmi/ui/widget/StatusBarView.kt | 3 - .../core/function/main/MainActivity.java | 23 +++++++ .../eagle/core/utilcode/util/BarUtils.java | 7 ++- .../com/mogo/commons/mvp/MvpActivity.java | 6 ++ 5 files changed, 42 insertions(+), 60 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index f0201eb236..0f5783796b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -198,8 +198,6 @@ class MoGoHmiFragment : MvpFragment(), } override fun initViews() { - toggleStatusBarView() - initViewShowWithConfig() //设置StatusBar初始状态 @@ -694,13 +692,13 @@ class MoGoHmiFragment : MvpFragment(), } override fun toggleSOPView() { - activity?.let{ - if(mSOPSettingViewFloat!= null){ + activity?.let { + if (mSOPSettingViewFloat != null) { WarningFloat.dismiss(mSOPSettingViewFloat!!.config.floatTag, false) mSOPSettingViewFloat = null mSOPSettingView = null - }else{ - if (mSOPSettingView == null){ + } else { + if (mSOPSettingView == null) { mSOPSettingView = SOPSettingView(it) } var side = RIGHT @@ -744,52 +742,6 @@ class MoGoHmiFragment : MvpFragment(), } } - private fun toggleStatusBarView() { - activity?.let{ - if(statusBarViewFloat!= null){ - WarningFloat.dismiss(statusBarViewFloat!!.config.floatTag, false) - statusBarViewFloat = null - statusBarView = null - }else{ - if (statusBarView == null){ - statusBarView = StatusBarView(it) - } - val side = TOP - val gravity = Gravity.TOP - statusBarViewFloat = WarningFloat.with(it) - .setTag("statusBarView") - .setLayout(statusBarView!!) - .setSidePattern(side) - .setWindowWidth(ScreenUtils.getScreenWidth()) - .setWindowHeight(BarUtils.getStatusBarHeight()) - .setGravity(gravity, 0) - .setImmersionStatusBar(true) - .setAnimator(object : DefaultAnimator() { - override fun enterAnim( - view: View, - params: LayoutParams, - windowManager: WindowManager, - sidePattern: SidePattern - ): Animator? = - super.enterAnim(view, params, windowManager, sidePattern) - ?.apply { - interpolator = LinearInterpolator() - } - - override fun exitAnim( - view: View, - params: LayoutParams, - windowManager: WindowManager, - sidePattern: SidePattern - ): Animator? = - super.exitAnim(view, params, windowManager, sidePattern) - ?.setDuration(200) - }) - .show() - } - } - } - /** * 展示VR下V2X预警 * @@ -820,7 +772,10 @@ class MoGoHmiFragment : MvpFragment(), val oldTime = context?.let { it -> SharedPrefsMgr.getInstance(it).getLong("roadwork", 0) } if (currentTime - oldTime!! > 60) { //超过一分钟,才会继续播报重复提醒 - context?.let { it -> SharedPrefsMgr.getInstance(it).putLong("roadwork", System.currentTimeMillis() / 1000) } + context?.let { it -> + SharedPrefsMgr.getInstance(it) + .putLong("roadwork", System.currentTimeMillis() / 1000) + } CallerAutoPilotManager.sendTripInfo(5, "", "", "", false); } } @@ -932,7 +887,7 @@ class MoGoHmiFragment : MvpFragment(), it.invokeOnCancellation { AIAssist.getInstance(ctx).stopSpeakTts(text) } - AIAssist.getInstance(ctx).speakTTSVoiceWithLevel(text, AIAssist.LEVEL2,voiceCallback) + AIAssist.getInstance(ctx).speakTTSVoiceWithLevel(text, AIAssist.LEVEL2, voiceCallback) } catch (t: Throwable) { it.resumeWith(Result.success(Unit)) CallerLogger.d("$M_HMI$TAG", t.message) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt index 4883232087..766c2f62b9 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt @@ -25,9 +25,6 @@ class StatusBarView @JvmOverloads constructor( init { LayoutInflater.from(context).inflate(R.layout.view_status_bar, this, true) - setOnClickListener { - - } } private val rightViewList = CopyOnWriteArrayList() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java index a3526435ed..260e4b3faa 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java @@ -11,7 +11,9 @@ import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.provider.Settings; +import android.view.Gravity; import android.view.View; +import android.view.ViewGroup; import android.widget.FrameLayout; import androidx.annotation.NonNull; @@ -38,6 +40,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; import com.mogo.eagle.core.function.hmi.R; +import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView; import com.mogo.eagle.core.function.main.cards.MogoModulesManager; import com.mogo.eagle.core.function.main.service.MogoMainService; import com.mogo.eagle.core.function.main.stagetwo.AutopilotStartup; @@ -47,6 +50,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.permissions.PermissionsDialogUtils; import com.mogo.eagle.core.utilcode.mogo.toast.ResourcesHelper; +import com.mogo.eagle.core.utilcode.util.BarUtils; import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.eagle.core.utilcode.util.ProcessUtils; import com.mogo.map.listener.IMogoHosListenerRegister; @@ -115,6 +119,7 @@ public class MainActivity extends MvpActivity implement @Override protected void initViews() { + injectStatusBar(); getWindow().setBackgroundDrawable(null); mFloatingLayout = findViewById(R.id.module_main_id_floating_view); @@ -135,6 +140,24 @@ public class MainActivity extends MvpActivity implement } } + private void injectStatusBar() { + FrameLayout decorView =(FrameLayout) this.getWindow().getDecorView(); + View contentView = ((ViewGroup)decorView.findViewById(android.R.id.content)).getChildAt(0); + contentView.setFitsSystemWindows(false); + decorView.setClipToPadding(false); + + View statusBarView = decorView.findViewWithTag("status_bar"); + if (statusBarView == null) { + statusBarView = new StatusBarView(this); + statusBarView.setTag("status_bar"); + } + FrameLayout.LayoutParams statusBarLP = + new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, BarUtils.getStatusBarHeight()); + statusBarLP.topMargin = 0; + statusBarLP.gravity = Gravity.TOP; + decorView.addView(statusBarView, statusBarLP); + } + // 隐藏布局 protected void hideLayout() { mFloatingLayout.setVisibility(View.GONE); diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java index bb1691f024..657482ac15 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java @@ -416,10 +416,11 @@ public final class BarUtils { public static void hideStatusBarAndSticky(@NonNull Window window){ final ViewGroup decorView = (ViewGroup) window.getDecorView(); - final int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION - | View.SYSTEM_UI_FLAG_FULLSCREEN + final int uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_STABLE - | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() | uiOptions); } 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 4318a63680..08b79179d1 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 @@ -87,6 +87,12 @@ public abstract class MvpActivity> exten return true; } + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + BarUtils.hideStatusBarAndSticky(this.getWindow()); + } + @Override protected void onDestroy() { super.onDestroy();