onClick
- это обратный вызов, при котором возврат в Android возвращается только после завершения обратного вызова.
Все взаимодействие с пользовательским интерфейсом, которое вы в основном выполняете, собирается и ставится в очередь, пока обратный вызов активен и выполняется после возврата (может быть технически не совсем точным).
Чтобы ProgressBar отображался в начале действия и исчезал в конце, вы можете реализовать AsyncTask
, где индикатор выполнения отображается в onPreExecute
, реальные вычисления выполняются в doInBackground
и прогрессбар отклоняется в onPostExecute
. Например:
protected void onPreExecute() {
dialog = new ProgressDialog(context);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.show();
}
protected void onPostExecute(Map<Integer, String> integerStringMap) {
if (dialog!=null)
dialog.cancel();
}
protected void onProgressUpdate(Integer... values) {
int val = values[0]*10000/num;
dialog.setProgress(val);
}
Смотрите здесь для более полного примера.