Добавить экран загрузки в запуске приложения Android
Мое приложение загружает стартовую страницу за 10 секунд. В это время 10 сек экран андроида пуст. В это время я хочу добавить экран загрузки. Как добавить это? А подскажите в приложении, как узнать, загружается ли стартовая страница? И скажите мне, как это сделать в моем приложении?
7 ответов
Вы можете использовать заставку в своей первой загрузке Активности следующим образом:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread welcomeThread = new Thread() {
@Override
public void run() {
try {
super.run();
sleep(10000); //Delay of 10 seconds
} catch (Exception e) {
} finally {
Intent i = new Intent(SplashActivity.this,
MainActivity.class);
startActivity(i);
finish();
}
}
};
welcomeThread.start();
}
Надеюсь, этот код поможет вам.
Используйте ProgressDialog.
ProgressDialog dialog=new ProgressDialog(context);
dialog.setMessage("message");
dialog.setCancelable(false);
dialog.setInverseBackgroundForced(false);
dialog.show();
скрывайте это всякий раз, когда ваш пользовательский интерфейс готов с данными. вызов:
dialog.hide();
Пожалуйста, прочитайте эту статью
Заставки просто тратят ваше время, верно? Как разработчик Android, когда я вижу заставку, я знаю, что какой-то плохой разработчик должен был добавить в код задержку в три секунды.
Затем я должен смотреть на какое-то изображение в течение трех секунд, пока не смогу использовать приложение. И я должен делать это каждый раз, когда он запускается. Я знаю, какое приложение я открыл. Я знаю, что это делает. Просто позволь мне использовать это!
Заставки на верном пути
Я считаю, что Google не противоречит самому себе; старый совет и новый вместе. (Тем не менее, это не очень хорошая идея использовать заставку, которая тратит время пользователя. Пожалуйста, не делайте этого.)
Однако для запуска приложений Android требуется определенное время, особенно при холодном запуске. Там есть задержка, которую вы не сможете избежать. Вместо того, чтобы оставить пустой экран в течение этого времени, почему бы не показать пользователю что-нибудь приятное? Это подход, который Google защищает. Не тратьте время пользователя, но не показывайте ему пустой, ненастроенный раздел приложения при первом запуске.
Если вы посмотрите на последние обновления приложений Google, вы увидите соответствующее использование заставки. Взгляните, например, на приложение YouTube.
Вы можете создать собственный экран загрузки вместо заставки. если вы показываете заставку в течение 10 секунд, это не очень хорошая идея для пользователя. Так что лучше добавить пользовательский экран загрузки. Для пользовательского экрана загрузки вам могут понадобиться несколько разных изображений, чтобы они выглядели как gif. После этого добавьте изображения в res
папку и сделайте класс, как это:-
public class LoadingScreen {private ImageView loading;
LoadingScreen(ImageView loading) {
this.loading = loading;
}
public void setLoadScreen(){
final Integer[] loadingImages = {R.mipmap.loading_1, R.mipmap.loading_2, R.mipmap.loading_3, R.mipmap.loading_4};
final Handler loadingHandler = new Handler();
Runnable runnable = new Runnable() {
int loadingImgIndex = 0;
public void run() {
loading.setImageResource(loadingImages[loadingImgIndex]);
loadingImgIndex++;
if (loadingImgIndex >= loadingImages.length)
loadingImgIndex = 0;
loadingHandler.postDelayed(this, 500);
}
};
loadingHandler.postDelayed(runnable, 500);
}}
В вашей MainActivity вы можете передать класс класса LoadScreen следующим образом:
private ImageView loadingImage;
Не забудьте добавить ImageView в activity_main. После этого вызовите класс LoadingScreen следующим образом;
LoadingScreen loadingscreen = new LoadingScreen(loadingImage);
loadingscreen.setLoadScreen();
Я надеюсь, что это поможет вам
public class Splash extends Activity {
private final int SPLASH_DISPLAY_LENGHT = 3000; //set your time here......
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Create an Intent that will start the Menu-Activity. */
Intent mainIntent = new Intent(Splash.this,MainActivity.class);
Splash.this.startActivity(mainIntent);
Splash.this.finish();
}
}, SPLASH_DISPLAY_LENGHT);
}
}
Если приложение ничего не делает в течение этих 10 секунд, это приведет к плохому дизайну только для того, чтобы заставить пользователя ждать 10 секунд, ничего не делая.
Если в этом что-то происходит, или если вы хотите реализовать заставку с задержкой в 10 секунд, вот код:
ProgressDialog pd;
pd = ProgressDialog.show(this,"Please Wait...", "Loading Application..", false, true);
pd.setCanceledOnTouchOutside(false);
Thread t = new Thread()
{
@Override
public void run()
{
try
{
sleep(10000) //Delay of 10 seconds
}
catch (Exception e) {}
handler.sendEmptyMessage(0);
}
} ;
t.start();
//Handles the thread result of the Backup being executed.
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
pd.dismiss();
//Start the Next Activity here...
}
};
Напишите код:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread welcomeThread = new Thread() {
@Override
public void run() {
try {
super.run();
sleep(10000) //Delay of 10 seconds
} catch (Exception e) {
} finally {
Intent i = new Intent(SplashActivity.this,
MainActivity.class);
startActivity(i);
finish();
}
}
};
welcomeThread.start();
}