Eu vim para ver que ProgressDialog
agora está obsoleto. O que seria um alternativo para usar no lugar disso, além de ProgressBar
? Estou usando a versão 2.3.3 do android studio.
ProgressDialog progressDialog=new ProgressDialog(this);
progressDialog.show();
Respostas:
Sim,
API level 26
está obsoleto. Em vez disso, você pode usarprogressBar
.Para criá-lo programaticamente:
Primeiro, obtenha uma referência ao layout raiz
ou
Em seguida, adicione a barra de progresso
Para mostrar a barra de progresso
Para ocultar a barra de progresso
Para desativar a interação do usuário, você só precisa adicionar o seguinte código
Para recuperar a interação do usuário, basta adicionar o seguinte código
Apenas para referência futura, altere
android.R.attr.progressBarStyleSmall
paraandroid.R.attr.progressBarStyleHorizontal
.O código abaixo funciona apenas acima
API level 21
Para criá-lo via xml:
Na sua atividade
Mostrar / ocultar a barra de progresso é o mesmo
Aqui está uma imagem de exemplo de como seria:
Para mais detalhes:
1. Referência um
2. Referência dois
fonte
você pode usar
AlertDialog
como seProgressDialog
refere abaixo código para oProgressDialog
. Essa função você precisa chamar sempre que mostrar uma caixa de diálogo de progresso.Código:
Resultado:
fonte
AlertDialog
não deva ser usado aqui.Foi descontinuado
Android O
devido aoGoogle
novo padrão de interface do usuáriofonte
Você pode simplesmente criar uma interface xml para sua barra de progresso e passá-la como uma exibição para um AlertDialog, depois mostrar ou descartar a caixa de diálogo a qualquer momento.
progress.xml
O código do código que exibe a caixa de diálogo de progresso. Basta copiar esse código e colá-lo em seu fragmento.
Em seguida, basta chamar o método sempre que desejar mostrar o diálogo de progresso e passar verdadeiro como argumento para mostrá-lo ou falso para descartar a caixa de diálogo.
fonte
this
, para queAlertDialog.Builder builder = new AlertDialog.Builder(this);
fique assim . Certifique-se de copiar o código certo.layout_toEndOf
pode ser removido desde que não sejaLinearLayout
O ProgressBar é muito simples e fácil de usar, pretendo fazer o mesmo que o simples diálogo de progresso. O primeiro passo é criar o layout em xml da caixa de diálogo que deseja mostrar, digamos que o nome desse layout
O próximo passo é criar o AlertDialog que mostrará esse layout com o ProgressBar
agora tudo o que resta é mostrar e ocultar esse diálogo em nossos eventos de clique como este
e é isso, deve funcionar, como você pode ver, é muito simples e fácil de implementar ProgressBar em vez de ProgressDialog. agora você pode mostrar / descartar esta caixa de diálogo no Handler ou no ASyncTask, depende de sua necessidade
fonte
progress_dialog.show();
parabuilder.show();
. Obrigado.show()
/dismiss()
, mas não o coloqueibuilder.show()
porque, para descartá-lo, teríamos que fazer odialog.dismiss()
que é meio confuso para alguém que gosta de manter seu código simples e fácil de entender, e também porquebuilder.show()
retornosAlertDialog
objeto, e vamos ter de salvar essa referência comoAlertDialog dialog = builder.show();
então fazerdialog.dismiss()
, é mais fácil terbuilder.create()
retorno em algumAlertDialog
objeto e, em seguida, usar esse objeto para mostrar e ocultar o diálogoSim, o ProgressDialog está obsoleto, mas o Dialog não está.
Você pode inflar seu próprio arquivo XML (contendo uma barra de progresso e um texto carregado) em seu objeto de diálogo e depois exibi-lo ou ocultá-lo usando as funções
show()
edismiss()
. Aqui está um exemplo (Kotlin):Classe ProgressDialog :
XML
No seu código : faça
var dialog = ProgressDialog.progressDialog(context)
Mostrar:
dialog.show()
Esconder:
dialog.dismiss()
fonte
Bem, se você realmente quer ir contra a vontade deles, ainda pode usar o Sweet Alert Dialog ou criar um por conta própria.
Código Java:
fonte
HideProgress
não faz nada.ProgressBar é a melhor alternativa para ProgressDialog. Um elemento da interface do usuário que indica o progresso de uma operação.
Para mais informações, consulte este documento do Google: https://developer.android.com/reference/android/widget/ProgressBar.html
fonte
Você não precisa importar nenhuma biblioteca personalizada.
Eu prefiro usar o moderno,
AlertDialog
então esta é a versão do Kotlin para a ótima resposta postada por Kishan Donga nesta página.Código Kotlin:
Uso:
Resultado:
fonte
view!!.context
Conforme mencionado na página de documentação, a alternativa é
ProgressBar
.ProgressDialog
A aparência de pode ser replicada colocando umProgressBar
em umAlertDialog
.Você ainda pode usá-lo, mas o Android não deseja que você o use, é por isso que está obsoleto. Portanto, considere resolver seu problema de outra maneira, como incorporar um
ProgressBar
no seuLayout
.fonte
refere-se a funções ou elementos que estão em processo de substituição por outros mais novos."Deprecated"
Vantagem
Eu diria pessoalmente que
ProgressBar
tem vantagem sobre os dois.ProgressBar
é um elemento da interface do usuário que indica o progresso de uma operação. Exibir barras de progresso para um usuário de maneira ininterrupta . Mostre a barra de progresso na interface do usuário do seu aplicativo.fonte
Uso DelayedProgressDialog em https://github.com/Q115/DelayedProgressDialog Ele faz o mesmo que ProgressDialog com o benefício adicional de um atraso, se necessário.
Usá-lo é semelhante ao ProgressDialog antes do Android O:
fonte
Configuração Gradle
Adicione a seguinte dependência ao module / build.gradle:
Como usá-lo?
O uso é semelhante ao ProgressDialog original
NB : Você deve substituir as atividades
onBackPressed()
Implementação do Java8:
Implementação Kotlin:
fonte
Talvez este guia possa ajudá-lo.
Normalmente, prefiro criar AlertDialogs personalizados com indicadores. Resolve problemas como a personalização da visualização do aplicativo.
fonte
Pode ajudar a outras pessoas.
Muitos aplicativos populares têm uma abordagem diferente para mostrar o progresso de qualquer solicitação de rede, carregamento de arquivos etc. O carregamento do spinner não mostra a quantidade de conteúdo carregado ou restante a ser carregado. Há um período de incerteza que é ruim na perspectiva da UI / UX. Muitos aplicativos populares (Facebook, Linkedin etc.) resolveram esse problema, mostrando primeiro a interface do usuário básica. Em seguida, o conteúdo carregado é preenchido gradualmente na tela.
Eu usei o brilho nos meus aplicativos para resolver esse problema.
Existe um bom artigo sobre isso que será benéfico para outras pessoas
fonte
Na caixa de diálogo de progresso, o usuário não pode fazer nenhum tipo de trabalho. Todos os processos em segundo plano são interrompidos durante o diálogo de progresso. Portanto, é aconselhável usar a barra de progresso em vez da caixa de diálogo de progresso.
fonte
Você pode usar o SpotDialog usando a biblioteca wasabeef você pode encontrar o tutorial completo no seguinte link:
fonte