我想在Android应用中显示启动画面。但我想在启动画面后面执行MainActivity的onCreate()
方法。因为我在这种方法上做了大量的工作。任何人都可以告诉我如何做到这一点。
答案 0 :(得分:2)
基本上你想在后台做一些工作,而用户会看到一些闪屏,对吧?你需要的是Async Task或Loader类的东西。
第1步:显示启动画面。 步骤2:启动异步任务,并在Async Task的doInBackground方法中执行所有繁重的处理 步骤3:使用Async Task的onPostExecute方法更新UI。在此方法中,首先关闭计时器以启动屏幕。然后发送意图以使用Async任务的繁重处理结果的数据启动另一个屏幕。在UI线程上显示它。
仅显示启动画面非常简单。此代码创建一个3秒的启动画面,然后将Intent发送到另一个活动。
public class SplashScreenActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
CountDownTimer cdt1 = new CountDownTimer(3000, 1000) {
Boolean checkInternetConnection = false;
@Override
public void onTick(long l) {
}
@Override
public void onFinish() {
//Send Intent here
Intent i = new Intent(getApplicationContext(),
anotherActivity.class);
startActivity(i);
}
}.start();
}
PS-不要忘记使用此代码将活动作为清单文件中的启动器活动。
答案 1 :(得分:1)
你可以试试Splash Screen ...
public class SplashScreen extends Activity {
//Further Needed Declarations
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
/**
* Showing splashscreen while making network calls to download necessary
* data before launching the app Will use AsyncTask to make http call
*/
new PrefetchData().execute();
}
}
答案 2 :(得分:1)
按照这篇文章在您的应用中实施启动画面。 Splash Screens the Right Way
答案 3 :(得分:1)
这与你想要的完全一样。
在drawable中创建文件
<item
android:drawable="@color/gray"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
Styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
</resources>
的活动:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
答案 4 :(得分:0)
您可以在onCreate方法中添加它
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// going to next activity
Intent i=new Intent(SplashScreenActivity.this,MainActivity.class);
startActivity(i);
finish();
}
},time);
然后根据需要初始化以毫秒为单位的时间值...
private static int time=5000;
有关更多详细信息,请从此链接下载完整代码...