Ionic 3 - 在闪屏显示期间隐藏状态栏

Ionic 3 - Hide status bar during splash screen show

我有一个带有 Ionic 3 的应用程序,在您的 app.component.ts 中,我使用 Statusbar ionic 插件来隐藏它,但是,这仅在平台就绪被触发后才会发生。

如何在启动画面中隐藏它?我试过了:

– 在闪屏期间不隐藏,仅在此隐藏之后 – 在闪屏期间不改变背景颜色

解决方案?

Android

似乎没有优雅的方式来隐藏应用程序启动时的状态栏。 但是有一种方法可以做到这一点。

  1. 找到MainActivity.java(也许platforms/android/src/io/ionic/starter
  2. 添加以下代码

import android.view.WindowManager;

public class MainActivity extends CordovaActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // enable Cordova apps to be started in the background
        Bundle extras = getIntent().getExtras();
        if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
            moveTaskToBack(true);
        }
        // [Hyuck] add this two line below    
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);
    }

    // [Hyuck] onStart() is totally new.
    @Override
    public void onStart()
    {
        super.onStart();
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
    }
}

IOS

我只能测试 Android 设备。所以,我只留下 the link 这可能会解决您的问题

在 MainActivity 页面中添加您的代码后 我运行构建apk的命令 我收到这个错误

 Task :app:compileDebugJavaWithJavac FAILED
E:\Ionic\AIOU_Solutions1\platforms\android\app\src\main\java\io\ionic\starter\MainActivity.java:38: error: package WindowManager does not exist
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

我在基于 Cordova 的应用程序中遇到了同样的问题。在找到这个解决方案之前,我无法弄清楚如何在 Splashcreen 期间隐藏状态栏(尝试了很多东西)。

在闪屏期间隐藏状态栏

选项 1 - 自己编辑文件

  • 找到文件platforms/android/app/src/main/res/values/strings.xml

  • 通过编辑 XML

    添加具有特定规则的自定义主题
     <?xml version='1.0' encoding='utf-8'?>
     <resources>
         <string name="app_name">My App Name</string>
         <string name="launcher_name">@string/app_name</string>
         <string name="activity_name">@string/launcher_name</string>
    
         <!-- Add your custom theme rules -->
         <style name="MyCustomTheme" parent="@style/Theme.AppCompat.NoActionBar">
             <item name="android:windowActionBar">false</item>
             <item name="android:windowNoTitle">true</item>
         </style>
     </resources>
    
  • 找到文件platforms/android/app/src/main/AndroidManifest.xml

  • 找到 <activity> 标签并添加对 "MyCustomTheme"

    的引用
     <activity android:theme="@style/MyCustomTheme" ...etc...
    

选项 2 - 从 Cordova 编辑文件 config.xml

  • 您可能更愿意直接从 config.xml 文件管理此自定义主题,而无需自己编辑 AndroidManifest.xmlstrings.xml。如果 cordova platform remove androidcordova platform add android 会删除您的更改,这会很有帮助。

  • 将此添加到您的 config.xml

      <platform name="android">
    
          <!-- Edit the activity tag fo your AndroidManifest.xml -->
          <edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application/activity">
              <activity android:theme="@style/MyCustomTheme"/>
          </edit-config>
    
          <!-- Edit the strings.xml file -->
          <edit-config file="strings.xml" mode="add" target="/resources">
              <style name="MyCustomTheme" parent="@style/Theme.AppCompat.NoActionBar">
                  <item name="android:windowActionBar">false</item>
                  <item name="android:windowNoTitle">true</item>
              </style>
          </edit-config>
    
      </platform>
    
  • 最后一步,请记住,为了能够使用 config.xml 文件中的 <edit-config> 标记,您需要将此 xmlns 属性添加到 <widget> 标签。

      <?xml version='1.0' encoding='utf-8'?>
      <widget xmlns:android="http://schemas.android.com/apk/res/android" ...etc...
    

如果你有更好的选择,我很想知道!