当前位置: 首页 > 知识库问答 >
问题:

飞溅之前出现空白屏幕

华景焕
2023-03-14

主要问题是初始屏幕在 2-3 秒后出现。在初始屏幕之前,会出现一个我不想要的空白布局。否则,它运行正常。只想删除出现在初始页面之前的空白布局。

主要活动:

public class MainActivity extends Activity {

    private static String TAG = MainActivity.class.getName();
    private static long SLEEP_TIME = 5; // Sleep for some time

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.requestWindowFeature(Window.FEATURE_NO_TITLE); // Removes title bar
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);  // Removes notification bar

        setContentView(R.layout.activity_main);

        // Start timer and launch main activity
        IntentLauncher launcher = new IntentLauncher();
        launcher.start();
    }

    private class IntentLauncher extends Thread {

        @Override
        /**
         * Sleep for some time and than start new activity.
         */
        public void run() {
            try {
                // Sleeping
                Thread.sleep(SLEEP_TIME*1000);
            } catch (Exception e) {
                Log.e(TAG, e.getMessage());
            }

            // Start main activity
            Intent intent = new Intent(MainActivity.this, Login.class);
            MainActivity.this.startActivity(intent);
            MainActivity.this.finish();
        }
    }

}

主布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@drawable/splash"
    tools:context=".MainActivity" >

</RelativeLayout>

共有3个答案

林烨华
2023-03-14

您在这里面临的问题称为“冷启动”,主要是在应用程序中花费的时间。onCreate方法,它通常会进行一些初始化,可能需要比您希望的更长的时间。您可以在这里阅读官方文件:https://developer.android.com/topic/performance/launch-time.html

如果是这种情况,那么按照其他人的建议将主题设置为半透明或禁用预览只会明显解决问题,因为实际上您将尝试启动应用程序,并且您不会收到任何关于您点击应用程序图标的反馈。您会看到您的应用程序延迟启动,这不是您想要的用户体验。

空白、黑色或白色屏幕,这实际上取决于在主活动主题中指定的android:windowBackground属性。除了移动您可能正在<code>应用程序中执行的一些初始化之外,您可以做的最好的事情。onCreate方法是按照本文中的建议,在预览窗口中添加一个徽标:

https://plus.google.com/ Android developers/posts/Z1Wwainpjhd

如果是这样的话,您可以通过在启动屏幕中动画您的徽标图像来进一步改善用户体验,或者通过以可以平滑过渡到您的主要活动内容的方式设计预览窗口,如下所述:

http://saulmm.github.io/avoding-android-cold-starts

同样的问题在这里得到了正确的回答:https://stackoverflow.com/a/40482549/7094200并在这篇博文中描述:https://www.bignerdranch.com/blog/splash-screens-the-right-way/

裴畅
2023-03-14

开始的活动最好使用主题背景,但是如果你不想在启动主活动之前出现空白屏幕,你可以这样定义你的活动:

添加 android:窗口禁用预览到您的应用程序主题在分辨率/值/样式.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="AppTheme" parent="android:Theme">
        <item name="android:windowDisablePreview">true</item>
  </style>
</resources>

然后在清单中设置活动主题:

<activity android:name=".MainActivity" android:theme="@style/AppTheme">
...
</activity>

附言:设置Android:窗口禁用预览不会影响您的活动背景,因此您无需担心。

池照
2023-03-14

一般来说,不建议将启动屏幕用于应用程序,但如果您真的必须这样做。

Android将根据您为其设置的主题加载活动布局之前加载空白布局。解决方案是将splash活动的主题设置为透明主题。

在<code>res/values/styles.xml中创建透明主题

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="Theme.Transparent" parent="android:Theme">
      <item name="android:windowIsTranslucent">true</item>
      <item name="android:windowBackground">@android:color/transparent</item>
      <item name="android:windowContentOverlay">@null</item>
      <item name="android:windowNoTitle">true</item>
      <item name="android:windowIsFloating">true</item>
     <item name="android:backgroundDimEnabled">false</item>
  </style>
</resources>

然后在清单中设置主题

<activity android:name=".SplashActivity" android:theme="@style/Theme.Transparent">
...
</activity>
 类似资料:
  • 我使用的是EclipseIDE,下面的代码在浏览器上显示空白屏幕。我不知道为什么它会显示空白屏幕。有什么想法吗?提前谢谢。 请查找部署描述符文件。网状物xml:

  • 我使用theme而不是layout来显示初始屏幕,但我不知道为不同的屏幕密度设置什么样的分辨率图像,因为标记的width和height属性可用API>22。 风格

  • 我的有问题,当我在手机上启动应用程序时,它会显示约0.5秒的白色屏幕。扩展了,在中,我声明为启动器,肖像模式为。 代码: XML:

  • 我以前也发布过同样的问题,但我现在再次发布,因为我在代码中发现了更多的错误并更正了它们。然而,我仍然面临着和以前一样的问题! 原始帖子:我几周前刚开始学习Python,我正在学习一个教程,用pygame构建一个数独解算器! 我现在面临的问题是,每当我尝试运行代码时,只会弹出一个黑色的空白窗口。我已经一遍又一遍地检查我的代码,但我似乎找不到问题。。。我不确定我的代码中到底是哪里出了问题,所以请原谅我

  • 我正在开发移动应用程序与离子有飞溅 截至目前,我正在使用以下代码进行配置 此外,我在第一次启动页面上使用了双击退出,下面是一段代码。 所以在启动页面,若我在5秒内点击两次后退按钮,它就会关闭。我可以在“打开的应用程序”列表中看到应用程序仍处于打开状态。(android手机中的第一个或最后一个按钮)。 问题是,如果我在双击退出后重新启动应用程序,那么它会显示一段时间的白屏和启动屏幕(但没有闪屏)。我

  • 最近在使用vue-admin-template开发后台管理系统,遇到动态路由刷新出现页面白屏问题 用户登录时通过角色获取角色路由并动态加载到router对象 在App.vue 中将保存于vuex中的路由信息刷新前存入到sessionStorage中,刷新后取出并重新加载路由; 重置路由方法 全局路由守卫 角色路由直接编写在JS文件中 出现问题正常登录能够进行路由跳转但是点击浏览器刷新出现页面白屏,