@geronix

Как сделать progressbar поверх окна, так чтоб предыдущие activity затемнить и сделать не активным?

Здравствуйте! Реализую android приложения. Приложения активно работает с сетью. В момент загрузки данных сделал ProgressDialog. Мне такой подход не очень нравиться, хотелось бы сделать так чтоб предыдущие activity затемнялось или скрывалось и виден был бы только progressbar по середине. Не могу найти подходящего решения. Подскажите пожалуйста, как такое можно реализовать?
  • Вопрос задан
  • 1149 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Copperfield
Android dude
Вам нужен DialogFragment.
Это обычный фрагмент, но с дополнительными "диалоговыми" методами, типа show, cancel, setCancelable.
Ответ написан
@jinnerrer
У меня в одном проекте есть нечто такое:

load data происходит посредством async task:

private class checkForUpdates extends AsyncTask {

Context mContext;
public checkForUpdates(Context context) {
mContext = context.getApplicationContext();
}

@Override
protected void onPreExecute() {
super.onPreExecute();

loaderActivity = new LoaderActivity();

}

@Override
protected Void doInBackground(Void... params) {
final ParseQuery query = ParseQuery.getQuery("GameSettings");
query.getFirstInBackground(new GetCallback() {
@Override
public void done(ParseObject parseObject, ParseException e) {
isUpdating = parseObject.getBoolean("updating");

Intent i = new Intent(mContext, MainMenuActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(i);

}
else
{
new getGameItems(context).execute();
}
}
});

return null;
}

@Override
protected void onPostExecute(Void result) {

}
}

Таким образом, я из одного активити запускаю метод загрузки даты. По завершении последнего происходит переход в другое активити. Думаю, совсем не сложно будет из этого сделать такую схему: Запускаете метод загрузки одновременно показываете вью, обозначающее загрузку контента (чего-нибудь), затем по завершении async task делаем возврат в первое активити (которое запустило этот метод). При этом, делаем активити, содержащее прогресс бар (я бы его кастомизировал для красоты), прозрачным. Это такой грязный хак, но он работоспособен. Есть противники того, чтобы запускать активити из нон активити классов, которые говорят, что происходит мемори лик. Но это все частные случаи, и если построить все верно, Вам не обязательно сталкиваться с мемори лик траблами.

Что еще? async task с лоадером, конечно, не обязательно прятать в отдельном нон активити классе (вполне можно и в активити разместить), но лично мне так удобнее))

Если что, спрашивай. Мне тоже интересно общаться и развиваться)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы