因此,我看到很多教程都演示了使用以下代码为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进行操作,但是由于某种原因,而不是带有应用程序图标的蓝色背景,我得到了全黑屏幕。 有什么想法吗?
答案 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();
}
});
}
在此处查看完整来源:
答案 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"/>