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

6

我有一个启动屏幕(无法避免,因为这是品牌推广的原因)用于我的应用程序。

我想在界面被遮盖时显示启动屏幕(就像银行应用程序一样)。

我应该重写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>

启动界面: 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);
}

MainActivity(): 显示一个包含文本和按钮的布局

onCreate():

setContentView(R.layout.example_view);

现在当我的应用程序在后台运行时,我按菜单按钮查看堆栈中的应用程序列表时,应该看到启动页视图(即XML文件),而不是默认的MainActivity布局。

我尝试的其中一件事是添加

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
                WindowManager.LayoutParams.FLAG_SECURE); 

当应用程序在后台时,使用白屏掩盖应用程序,但我想在应用程序在后台时显示启动画面。

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

编辑: enter image description here

如果您在后台看到Twitter应用程序(示例),我想用启动画面掩盖应用程序视图。现在,使用FLAG_SECURE可以帮助我用白屏遮盖屏幕,但我想显示闪屏布局而不是白屏。

  • 如果您从iOS设备查看下面的图片-DISCOVER应用程序(示例)使用闪屏屏幕掩盖应用程序,这在Android上可以实现吗

enter image description here


你想在重新打开应用程序时再次打开活动吗?如果不是,最好的方法是在 onPause() 方法中调用 finish() - Aitor Pagán
不,我已经编辑了我的问题以便更好地理解。 - DroidDev
1个回答

3

这个能在安卓上实现吗?

不直接支持,据我所知。

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

可能不需要。虽然您可以在那里更改用户界面:

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

  • 这可能太晚了,无法及时截取屏幕截图


整个目的是在应用程序处于后台显示启动画面时保护应用程序,但由于我没有看到其他解决方案 - (使用下面的方法只会将视图隐藏在白色空白屏幕中,这部分是我想要的) getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); - DroidDev
1
@User54321:FLAG_SECURE将处理安全部分,尽管它存在一些漏洞。我不知道有没有办法自定义那个屏幕。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接