[英]Android: Splash screen not showing
因此,我试图使启动屏幕正常工作,但我无法解决问题。 在初始屏幕期间,我得到一个白色屏幕,尽管它应该是不同的颜色并包含文本。 这是我的清单文件:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.haas.ryan.bouncingball">
<!-- Gives permission to create directories and files -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_E
<application
android:allowBackup="true"
android:icon="@mipmap/bb_logo"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".splash.SplashActivity"
android:screenOrientation="userLandscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".bbsource.MainActivity"
android:screenOrientation="userLandscape">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
这是我的2个初始屏幕相关的类:
SplashActivity.java
package com.haas.ryan.bouncingball.splash;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import com.haas.ryan.bouncingball.bbsource.MainActivity;
public class SplashActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new SplashEnvironment(this, this));
}
public void finish() {
startActivity(new Intent(this, MainActivity.class));
super.finish();
}
}
SplashEnvironment.java
package com.haas.ryan.bouncingball.splash;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/**
* Created by Ryan on 7/31/2017.
*/
public class SplashEnvironment extends SurfaceView implements SurfaceHolder.Callback {
private SplashActivity splashActivity;
public SplashEnvironment(Context context, SplashActivity splashActivity) {
super(context);
this.splashActivity = splashActivity;
getHolder().addCallback(this);
}
public void surfaceCreated(SurfaceHolder sh) {
try {
Thread.sleep(10000);
} catch(Exception e) {
e.printStackTrace();
}
splashActivity.finish();
}
public void surfaceDestroyed(SurfaceHolder sh) {}
public void surfaceChanged(SurfaceHolder sh, int format, int width, int height) {}
public void onDraw(Canvas canvas) {
draw(canvas);
}
public void draw(Canvas canvas) {
super.draw(canvas);
canvas.drawColor(Color.RED);
System.out.println("got here");
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setTextSize(40f * getResources().getDisplayMetrics().density);
canvas.drawText("SPLASH SCREEN", 100, 100, paint);
}
}
持续时间过后,白屏消失,并最终加载bbsource.MainActivity
并绘制bbsource.MainActivity
所有内容。
那么,当我清楚地告诉它绘制其他内容时,为什么会出现白屏?
尝试这个
public class SplashActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new SplashEnvironment(this, this));
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo / company
*/
@Override
public void run() {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
// close this activity
}
}, 3000);// time for spalsh screen
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.