🚀 3.9 ProgressBar e Feedback de Operação
Sempre que uma operação demorada for executada, como o download de dados ou processamento de arquivos, é crucial manter o usuário informado. No Android moderno, o antigo ProgressDialog foi descontinuado em favor do uso de ProgressBars diretamente na interface ou em diálogos personalizados.
Por que não usar ProgressDialog?
WARNING
Componente Depreciado: O
ProgressDialog(API 26+) é desencorajado porque impede a interação do usuário com a tela inteira de forma forçada. A recomendação atual é integrar o feedback visual diretamente no layout ou utilizar umDialogFragmentpersonalizado.
Implementando a ProgressBar no Layout
No layout lista_viagem.xml, adicionamos uma barra de progresso horizontal para mostrar o consumo do orçamento:
<ProgressBar
android:id="@+id/barraProgresso"
android:layout_width="match_parent"
android:layout_height="8dp"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_marginTop="8dp"
android:progressTint="@color/primary_blue" />Manipulação de Progresso (ViewBinding & Java 17)
Dentro do nosso ViewBinder na ViagemListActivity, atualizamos os valores da barra de forma dinâmica:
@Override
public boolean setViewValue(View view, Object data, String textRepresentation) {
if (view.getId() == R.id.barraProgresso) {
// Utilizamos Double[] para orçamento, limite e total gasto
var valores = (Double[]) data;
var progressBar = (ProgressBar) view;
progressBar.setMax(valores[0].intValue()); // Orçamento
progressBar.setSecondaryProgress(valores[1].intValue()); // Limite
progressBar.setProgress(valores[2].intValue()); // Gasto atual
return true;
}
return false;
}Indicação de Processamento (Indeterminado)
Para operações sem duração definida, utilize a versão circular da ProgressBar integrada ao layout e controle sua visibilidade:
// Exibe a barra antes da operação
binding.loadingBar.setVisibility(View.VISIBLE);
// Oculta após a conclusão
binding.loadingBar.setVisibility(View.GONE);TIP
O uso de
progressTintpermite harmonizar a barra de feedback com a paleta de cores da sua aplicação (Material Design 3), proporcionando um acabamento Premium.