正确的启动画面只有黑色

时间:2018-06-28 11:50:16

标签: java android xml splash-screen

因此,我看到很多教程都演示了使用以下代码为Android实现SplashScreen的“正确方法”:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/colorPrimary" />

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>

</layer-list>

^ drawable / splash_background.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<!-- Splash Screen theme. -->

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/splash_background</item>
</style>

^ values / styles.xml

  package com.rws.jsonclassifier;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.support.v7.app.AppCompatActivity;

public class SplashActivity extends AppCompatActivity {

    @Override

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

        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }

}

^ SplashActivity.java

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rws.jsonclassifier">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".SplashActivity"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".MainActivity"></activity>
</application>

^ AndroidManifest.xml

我正在使用代码并按照教程中显示的setep进行操作,但是由于某种原因,而不是带有应用程序图标的蓝色背景,我得到了全黑屏幕。 有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我认为是因为您没有使用Handler来导航到下一个Activity。我也在我的一个应用程序中实现了这一点。

AndroidManifest.xml

<activity
     android:name=".view.LaunchActivity"
     android:label="@string/app_name"
     android:launchMode="singleTask"
     android:theme="@style/AppTheme.Launch">
     <intent-filter>
          <action android:name="android.intent.action.MAIN" />

          <category android:name="android.intent.category.LAUNCHER" />
          <category android:name="android.intent.category.INFO" />
      </intent-filter>
 </activity>

styles.xml

<style name="AppTheme.Launch" parent="AppTheme.NoActionBar">
        <item name="android:windowBackground">@drawable/activity_launch</item>
</style>

activity_launch.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/product_logo_windesheim" />
    </item>
</layer-list>

然后使LaunchActivity仅扩展Activity

 @Override
 public void onCreate(Bundle bundle) {
     super.onCreate(bundle);
     new Handler().post(new Runnable() {
         @Override
         public void run() {
            Intent intent = new Intent(LaunchActivity.this, ScheduleActivity.class);
            startActivity(intent);
            finish();
         }
     });
 }

在此处查看完整来源:

https://github.com/gi097/MyWindesheim/

答案 1 :(得分:0)

之后

super.onCreate(savedInstanceState);

添加

setContentView(R.layout.activity_splash);

也像@Nabil所说的那样添加处理程序

答案 2 :(得分:-1)

在onCreate内使用处理程序,并尝试为启动活动添加新的splash.xml布局视图:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
            finish();
       }
       }, 2000);
    }

您可以在splash.xml布局中添加自己的设计

如果您仍然想使用编码方式,那么我认为错误在于 drawable / splash_background.xml

将ic_launcher添加到您的可绘制文件夹中,然后进行更改

<bitmap
    android:gravity="center"
    android:src="@mipmap/ic_launcher"/>

<bitmap
android:gravity="center"
android:src="@drawable/ic_launcher"/>