'Load MainActivity during Splash Screen
I currently have a splashScreenActivity
that requires the User the press on a button
to go to the MainActivity
.
Would it be possible to load all the contents of MainActivity
WITHOUT MainActivity
's UI APPEARING ON TOP OF splashScreenActivity
's UI so that when he does presses the button, he is redirected to the MainActivity
and all the data is 100% loaded?
Thanks in advance
Solution 1:[1]
I found an answer to my problem!
Note that in my case MainActivity
can be any activity
Having a Splash Screen as a fragment
instead of an activity
allows you to overlay the MainActivity
with the fragment
, while the MainActivity
data loads in the background.
At this point, whenever you are ready, simply set the visibility of the fragment
to View.GONE
or pop it off the fragment stack getFragmentManager().popBackStack();
, and you will return (never really left) to your MainActivity
with all the data loaded.
Solution 2:[2]
Use Full Screen Dialog With Runnable on Main Activity
public void showsplash() {
final Dialog dialog = new Dialog(MainActivity.this, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.activity_splash_screen);
dialog.setCancelable(true);
dialog.show();
final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
{
dialog.dismiss();
}
}
};
handler.postDelayed(runnable, 30000);
}
Solution 3:[3]
enter code here
1) Use AsyncTask<> to load all your MainActivity contents in the background while the user is in the SplashScreenActivity. This will help you avoid the extra step of clicking on a button to take you from the SplashScreenActivity to the MainActivity, and this will be handled through the use of Intents. (Refer to working example below)
SplashScreenActivity.java
package foo.foo.load.mainactivity
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.AssetManager;
import android.content.res.Configuration;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
public class SplashScreenActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
// Make call to execute AsycTasks<> here
// This helps avoid the extra step of clicking on a button
// to take you to the MainActivity
new StartMainActivity().execute(this);
Thread timerThread = new Thread() {
public void run() {
try {
sleep(2000);
} catch(InterruptedException e) {
e.printStackTrace();
} finally {
// After 2 seconds the Splashscreen will disappear and user is taken to MainActivity
Intent splashScreenIntent = new Intent(SplashScreenActivity.this, MainActivity.class);
startActivity(splashScreenIntent);
}
}
};
timerThread.start();
}
@Override
protected void onPause() {
super.onPause();
finish();
}
private class StartMainActivity extends AsyncTask<Context, Void, Intent> {
Context ctx;
@Override
protected Intent doInBackground(Context... params) {
ctx = params[0];
AssetManager assetManager = ctx.getAssets();
final CBLite cblite = new CBLite(new AndroidContext(ctx), assetManager);
// Handle all your MainActivity Contents call here
// Begin MainActivity Content Calls
Image.getImages();
Navigation.getMainNavigation();
// End MainActivity Content Calls
Intent in = new Intent();
in.setClass(ctx, MainActivity.class);
return in;
}
@Override
protected void onPostExecute(Intent intent) {
ctx.startActivity(intent);
super.onPostExecute(intent);
}
}
}
activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@drawable/splashscreen_background_image"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/splashScreenMainTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:gravity="center"
android:text="Header Title"
android:visibility="visible"/>
<TextView
android:id="@+id/splashScreenSubTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/splashScreenMainTitle"
android:layout_marginBottom="40dp"
android:gravity="center"
android:text="Sub Header Title"
android:visibility="visible"/>
<ImageView
android:id="@+id/splashScreenLogo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/splashScreenSubTitle"
android:src="@drawable/logo"
android:layout_gravity="center_horizontal"
android:background="@android:color/transparent"/>
</RelativeLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_menu_search" />
</android.support.design.widget.CoordinatorLayout>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | IKavanagh |
Solution 3 | StealthRT |