Progressbar togther с asyncTask
Я хочу использовать индикатор прогресса на моем экране вместо progressDialog.
Я вставил progressBar в свой файл XML-view, и я хочу показать его, когда он загружает и отключает его, когда не загружается.
Поэтому я использовал видимость, но это происходит, поэтому остальная часть данных сходит.
- Ссылка должна быть открыта в том же веб-браузере в Android
- Интеграция сканера QR-кода ZXing без установки BarCode Scanner
- Firebase FCM force onTokenRefresh () будет называться
- Получить текущий объект fragmentа
- Firebase onMessageReceived не вызывается, когда приложение в фоновом режиме
Как я должен использовать progressbar в asynctask? Как я могу показать и скрыть это?
- Что такое ярлык для автоматического импорта всех в Android Studio?
- Определить, было ли приложение загружено с Android Market
- Панель инструментов Android: маленький текст заголовка в ландшафтном режиме
- UserRecoverableAuthException: NeedPermission
- Каков наилучший способ сохранить JNIEnv *
- Как начать работу со службы?
- как установить fragment карты google внутри прокрутки
- Отправлять приложение с базой данных
Вот наиболее исчерпывающий пример:
public class ScreenSplash extends Activity { @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.screen_splash); final ProgressBar progress = (ProgressBar)findViewById(R.id.progress); final TextView textview = (TextView)findViewById(R.id.text); new MyWorker(this, progress, textview).execute(); } } final class MyWorker extends AsyncTask { private static final int titles[] = {R.string.splash_load_timezone, R.string.splash_load_memory, R.string.splash_load_genres, R.string.splash_load_channels, R.string.splash_load_content}; private static final int progr[] = {30, 15, 20, 25, 20}; private int index; private final Activity parent; private final ProgressBar progress; private final TextView textview; public MyWorker(final Activity parent, final ProgressBar progress, final TextView textview) { this.parent = parent; this.progress = progress; this.textview = textview; } @Override protected void onPreExecute() { int max = 0; for (final int p : progr) { max += p; } progress.setMax(max); index = 0; } @SuppressWarnings("unchecked") @Override protected Void doInBackground(final Void... params) { /* Load timezone. this is very slow - may take up to 3 seconds. */ ... publishProgress(); /* Get more free memory. */ ... publishProgress(); /* Load channels map. */ ... publishProgress(); /* Load genre names. */ ... publishProgress(); /* Preload the 1st screen's content. */ ... publishProgress(); return null; } @Override protected void onProgressUpdate(final Integer... values) { textview.setText(titles[index]); progress.incrementProgressBy(progr[index]); ++index; } @Override protected void onPostExecute(final Void result) { parent.finish(); } }
Для показа / скрытия вашего индикатора выполнения используйте progress.setVisibility(View.VISIBLE)
и progress.setVisibility(View.GONE)
. Также View.INVISIBLE
постоянная View.INVISIBLE
; его отличие от GONE
заключается в том, что ваш индикатор прогресса не нарисован, но по-прежнему занимает его пространство (полезно для некоторых макетов).
Что касается использования A progress bar из async-задачи, вы можете использовать PostPrgressUpdate()
из doInBackground(int Progress)
и в OnProgressUpdate()
обновить ProgressBar соответственно. Что касается Show и hide of bar, я не смог понять ваш вопрос (или проблему, пожалуйста, пересмотреть)
в использовании xml
затем в Asyntask
ProgressBar mProgress=(ProgressBar) findViewById(R.id.progress_bar); @Override protected void onPostExecute(String s) { super.onPostExecute(s); mProgress.setVisibility(View.GONE); }