Используйте метод OnProgressUpdate в AsyncTask.
Если вы знаете размер файла, вы можете установить максимальное значение в onPreExecute:
protected void onPreExecute() {
ProgressDialog myDialog = new ProgressDialog(context);
myDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
myDialog.setMax(maxValue);
myDialog.show();
}
РЕДАКТИРОВАТЬ: добавлен myDialog.show ();
Существует несколько способов обновления прогресса, либо путем увеличения на сумму, либо путем установки прогресса на конкретное значение:
@Override
protected void onProgressUpdate(Integer... progress) {
myDialog.incrementProgressBy(progress[0]);
// or
// myDialog.setProgress(progress[0]);
}
Затем в onDoInBackground ():
@Override
protected void doInBackGround() {
// your code
publishProgress(1);
}
РЕДАКТИРОВАТЬ пример с индикатором выполнения в макете:
В своем файле макета добавьте индикатор выполнения, подобный этому
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:visibility="gone"
/>
И в асинхронной задаче:
protected void onPreExecute() {
ProgressBar myProgress = findViewById(R.id.progressbar);
myProgress.setMax(maxValue);
myProgress.setVisibility(View.VISIBLE);
}
protected void onProgressUpdate(Integer... progress) {
myProgress.setProgress(progress[0]);
}