Добавьте загрузочный экран при запуске приложения для android
Мое приложение загружает начальную страницу за 10 секунд. В это время 10 секунд экран android пуст. За это время я хочу добавить загрузочный экран. Как его добавить? И скажите мне в приложении, как узнать, что стартовая страница загружается? И скажите, как это сделать в моем приложении?
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, когда я вижу заставку, я знаю, что какой-то бедный разработчик должен был добавить трехсекундную задержку в код.Затем я должен смотреть на какую-то картинку в течение трех секунд, пока не смогу использовать приложение. И я должен делать это каждый раз, когда он запускается. Я знаю, какое приложение я открыл. Я знаю, что он делает. Просто позволь мне им воспользоваться!
Заставки правильный путь
I поверьте, что 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 вы можете передать класс LoadingScreen следующим образом: -
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(); }