Android splash screen while loading MainActivity
Solution 1
make a splash screen like this:
while(counter < 1300) {
try {
Thread.sleep(1000);
}catch(InterruptedException e) {
e.printStackTrace();
}
counter+=100;
}
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
Hope it helps!
EDIT: Anotehr way to make a splash would be like this:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
Intent intent = new Intent(getApplicationContext(), YourNextActivity.class);
startActivity(intent);
}
},3000); -> the splash will show for 3000 ms, you can reduce this.
Solution 2
Easy way to do it..
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.example.tabs.R;
public class Splash extends Activity implements Runnable
{
Thread mThread;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
mThread = new Thread(this);
mThread.start();
}
@Override
public void run()
{
try
{
Thread.sleep(2000);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
startActivity(new Intent(Splash.this, MainActivity.class));
finish();
}
}
}
splash.xml if you want to show a image
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/splash" >
</LinearLayout>
Note if you want to do some UI operation in splash .Then you have to create a handler and update UI in it.
Solution 3
The main thread cannot be blocked for a long time. You should use Handler
to trigger another event if you want to start another event in 3 seconds. You can use sendMessageDelayed. In addition, startActivity
should be called in main thread.
Related videos on Youtube
Hugo M. Zuleta
Updated on September 16, 2022Comments
-
Hugo M. Zuleta over 1 year
So, I just read this question: How do I make a splash screen? But instead of adding a fixed delay (like in the top answer), I wanted to keep the splash screen on while the MainActivity (with a MapFragment) loads.
public class SplashScreen extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); Thread t = new Thread(new Runnable() { @Override public void run() { Intent i = new Intent(SplashScreen.this, MainActivity.class); startActivity(i); synchronized (this) { try { wait(3000); System.out.println("Thread waited for 3 seconds"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }); try { t.start(); t.join(); finish(); } catch (InterruptedException e) { e.printStackTrace(); } }
I added the wait(3000) line, because I noticed before that the thread didn't live for long. However, if I make it wait for longer, there's just a black screen that lasts longer. For some reason, the SplashScreen activity won't show the ImageView. What should I do? Thanks.
-
Alex Lockwood over 10 years
-
-
Hugo M. Zuleta over 10 yearsWill try it! I'll make sure to tell you if it does. Thanks.
-
Hugo M. Zuleta about 10 yearsI didn't give you the -1, I accepted the answer. (:
-
Rat-a-tat-a-tat Ratatouille about 10 years@HugoM.Zuleta Lol it wasnt you :).. someone else did. :).. i just wanted to know the reason so that i could improve if i was wrong..
-
Peter over 9 yearsreason ? cos it's not correct splash
-
nizam.sp over 8 yearsPurpose of splash screen is to show the logo till the activity is loaded. Its not meant for a fixed time showing. On slower phones, the splash screen will appear longer and in faster phones it will just flash.
-
Zeeshan Shabbir over 7 yearsthis is not the best way.
-
Zar E Ahmer over 7 yearsYes not the best way. there are other ways like TimerTask,Handler,CountDownTimer. Handler is preferable.
-
Zeeshan Shabbir over 7 yearsThose aren't the best ways either.
-
Zeeshan Shabbir over 7 yearsbignerdranch.com/blog/splash-screens-the-right-way this guy has shown the best way.
-
Zar E Ahmer over 7 yearsI have read that article before but it didn't provide any delay and splash doesn't work as it should be.
-
Zeeshan Shabbir over 7 yearsthat's the actual technique. You should check the splash of Maps or Youtube app. They are using this kind of technique.
-
Zeeshan Shabbir over 7 yearsoh i see you work at BoardPeak :D . how can i approach you? email if possible please
-
Zar E Ahmer over 7 yearsYes sure, here you go [email protected] .How may I help you?
-
Zeeshan Shabbir over 7 yearsI just e-mailed you.
-
Rat-a-tat-a-tat Ratatouille about 5 years@nizam.sp: well if u have a better way why not post your answer? Instead of just negating this solution, or whoever it did.
-
Ahmad Vatani almost 4 yearsCheck my optimal and easy solution: medium.com/@vatani.ahmad/…