gpt4 book ai didi

java - Android 在加载时显示启动画面

转载 作者:太空狗 更新时间:2023-10-29 22:59:37 24 4
gpt4 key购买 nike

我有一个 Android 应用程序,它显示“启动画面”3 秒钟。之后,加载 MainActivity。

不幸的是,MainActivity 需要大约 4 秒的时间来加载。在第一次启动时甚至更长。然而,当应用程序加载时,一切运行顺利。

现在我该如何实现,在启动画面显示期间加载 MainActivity?它应该只显示一个图像,直到整个东西完全加载。我已经阅读了有关 Async-Task 的信息,但我不确定将它放在哪里以及如何正确使用它。有人可以帮帮我吗?

SplashScreen.java

public class SplashScreen extends Activity {
private static int SPLASH_TIME_OUT = 3000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_startup);

new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(SplashScreen.this, MainActivity.class);
startActivity(i);
finish();
}
}, SPLASH_TIME_OUT);
}
}

MainActivity.java

public class MainActivity extends Activity implements OnClickListener, MediaController.MediaPlayerControl {

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

//Some heavy processing
//starting services
//starting Google Text to Speech
//and so on...

}

}

最佳答案

您不应在启动时创建新线程,而应创建不必等待资源加载的 View ,如本文所述:Splash Screens the Right Way .

如文章所述,您应该创建一个 layer-list 可绘制对象而不是 layout XML 文件:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<!-- Fill the background with a solid color -->
<item android:drawable="@color/gray"/>

<!-- Place your bitmap in the center -->
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>

</layer-list>

然后使用可绘制文件作为背景创建一个主题。我使用 background 属性而不是文章中建议的 windowBackground 属性,因为 background 考虑了状态栏和导航栏,将更好画。我还将 windowAnimationStyle 设置为 null,这样启动画面就不会动画化到 MainActivity 的过渡:

<resources>

<!-- Base application theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>

<!-- Splash Screen theme -->
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:background">@drawable/background_splash</item>
<item name="android:windowAnimationStyle">@null</item>
</style>

</resources>

然后在 list 中为您的 SplashActivity 声明您的主题:

<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>

最后,您在 SplashActivity 中所要做的就是启动您的 MainActivity,启动画面只会在您的应用进行配置时显示:

public class SplashActivity extends AppCompatActivity {

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

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

关于java - Android 在加载时显示启动画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31473557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com