我正在我的 Galaxy s5 和 s6 上尝试我的应用程序,但在此设备上我的应用程序不显示启动屏幕(来自 ImageView 的背景)(应用程序显示白屏并转到主屏幕)。我在 android studio 上尝试了一个虚拟设备,它工作没有问题。谁能知道为什么会发生这种情况以及我该如何解决这个问题?
我的 SplashScreen 类 -
protected void onCreate(Bundle savedInstanceState) {
// hide action bar from the activity
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.hide();
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_screen);
/****** Create Thread that will sleep for 6 seconds *************/
Thread background = new Thread() {
public void run() {
try {
// Thread will sleep for 6 seconds
sleep(6 * 1000);
// After 5 seconds redirect to another intent
Intent i = new Intent(getBaseContext(), MainActivity.class);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
startActivity(i);
//Remove activity
finish();
} catch (Exception e) {
}
}
};
// start thread
background.start();
}
谢谢!
最佳答案
根据您想要执行的操作,您有 2 个选项。
选项 1
您只想显示启动屏幕并继续。后台不会发生大量数据加载/准备。
在本例中,创建一个 SplashActivity,将您的图像作为背景或在 ImageView 内。在 SplashActivity 的 onCreate()
内部执行以下操作:
Handler handler = new Handler();
handler.postDelayed(new Runnable(){
startActivity(SplashActivity.this, MainActivity.class);
}, SPLASH_TIMEOUT);
其中 SPLASH_TIMEOUT 是您想要显示启动屏幕的时间(以毫秒为单位)。
选项 2
在后台加载数据时显示启动屏幕。
在本例中,将 ImageView
放在 View 层次结构的顶部,并使其宽度和高度 match_parent
。给它一些要从代码中引用的 id。
完成加载/获取数据后,您可能会收到一些回调,通知您一切都已完成,只需在该回调中执行
splashImage.setVisibility(View.GONE);
就是这样!
关于Android 启动画面在真实设备上不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37897164/