当应用程序在 Android 中处于后台时如何显示启动画面?

Dro*_*Dev 5 android splash-screen android-intent android-activity

我的应用程序有一个启动画面(无法避免,因为这是出于品牌原因)。

我想屏蔽用户界面并在后台显示启动画面(就像银行应用程序一样)。

我应该为 MainActivity 中的视图覆盖 onPause() 和 onResume() 吗?

显现:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main"
        android:theme="@style/AppTheme.NoActionBar"></activity>
</application>
Run Code Online (Sandbox Code Playgroud)

飞溅活动: onCreate()

setContentView(R.layout.splash_layout);
new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            /* Create an Intent that will start the Main-Activity. */

            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
            finish();
        }
    }, SPLASH_DISPLAY_LENGTH);
}
Run Code Online (Sandbox Code Playgroud)

MainActivity(): 只显示带有文本和按钮的布局

onCreate():

setContentView(R.layout.example_view);
Run Code Online (Sandbox Code Playgroud)

现在,当我的应用程序在后台并且当我按下菜单按钮查看堆栈中的应用程序列表时,我应该看到 splashview(xml 文件)而不是默认行为,即 MainActivity 布局。

我尝试过的一件事是添加

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
                WindowManager.LayoutParams.FLAG_SECURE); 
Run Code Online (Sandbox Code Playgroud)

当应用程序处于白屏背景时,它确实掩盖了应用程序,但我试图在应用程序处于后台时显示启动视图。

我知道所有的 iOS 银行应用程序都有这个功能。

编辑在此处输入图片说明

如果您在后台看到 twitter 应用程序(示例),我想用闪屏屏蔽应用程序视图。现在使用 FLAG_SECURE 帮助我用白屏屏蔽屏幕,但我想显示 Splash 布局而不是白屏。

  • 如果您在 iOS 设备上看到下图 - DISCOVER 应用程序(示例)使用闪屏屏蔽了应用程序,这可以在 Android 上完成吗?

在此处输入图片说明

Com*_*are 3

这可以在 Android 上完成吗?

不直接,据我所知。

我应该覆盖 MainActivity 中视图的 onPause() 和 onResume() 吗?

可能不会。欢迎您在那里更改您的用户界面:

  • 这些方法会因其他原因被调用(例如,当用户在多窗口模式下点击另一个窗口时,当您启动另一个活动时)

  • 相对于截取屏幕截图的时间来说可能为时已晚