我正在使用启动屏幕:
setContentView(R.layout.activity_home);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(getApplicationContext(),MainActivity.class));
}
}, 3500);
它正在运行,它显示了我的启动屏幕3秒钟半。但是,当我启动该应用程序时,首先显示白色,大约一秒钟,然后显示启动屏幕。由于代码可以正常工作,问题可能出在我使用的手机还是模拟器上?还是我需要在代码中添加一些内容?
答案 0 :(得分:1)
白屏是由AppTheme引起的。初始化应用后,会在设置任何视图之前显示默认的白屏。
只需在AppTheme中添加以下属性,即可使白屏消失。
只需添加
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowBackground"><place here any drawable or color></item>
</style>
让我知道它是否对您有帮助。谢谢!!!
答案 1 :(得分:0)
不,这不是您的代码问题。我的应用程序也会发生这种情况。似乎android加载应用程序本身时出现白屏。如果您只是在开始时加载很多东西,那么加载时间会更长,因此白屏会更大。
答案 2 :(得分:0)
对于我的启动画面,我正在使用两个活动,您还必须在清单文件中注册这些活动:
<activity
android:name=".ActivityMain"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:parentActivityName=".SplashActivity"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
在我的“飞溅活动”中,我的主要活动是按照以下意图进行的:
public class SplashActivity extends AppCompatActivity {
private final Runnable task = () -> {
Intent intent = new Intent(this, ActivityMain.class);
startActivity(intent);
finish();
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
final AnimatedVectorDrawableCompat animatedVectorDrawableCompat =
AnimatedVectorDrawableCompat.create(getApplicationContext(),
R.drawable.animatedvector);
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageDrawable(animatedVectorDrawableCompat);
final Animatable animatable = (Animatable) imageView.getDrawable();
animatable.start();
Handler handler = new Handler();
handler.postDelayed(task, 1500);
}
}
如您所见,主要活动的开始被处理程序延迟。
希望这会有所帮助;我没有用此代码获得白屏;-)