Atualmente, estou usando no meu aplicativo uma lista de exibição que talvez precise de um segundo para ser exibida.
O que atualmente faço é usar a propriedade @ id / android: empty da listview para criar um texto "carregando".
<TextView android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="Loading..."/>
Agora, gostaria de substituir isso pelo círculo animado usado em uma caixa de diálogo de carregamento, em vez deste texto, acho que todos sabem o que quero dizer:
Edit: Eu não quero um diálogo. Eu quero mostrar isso dentro do meu layout.
Muito obrigado pela sua ajuda!
android
loading
android-asynctask
geometry
Waza_Be
fonte
fonte
Você pode fazer isso usando o seguinte xml
Com esse estilo
Para usar isso, você deve ocultar seus elementos da interface do usuário configurando o valor de visibilidade como GONE e, sempre que os dados forem carregados, chame
setVisibility(View.VISIBLE)
todas as suas visualizações para restaurá-las. Não esqueça de ligarfindViewById(R.id.loadingPanel).setVisiblity(View.GONE)
para ocultar a animação de carregamento.Se você não possui um evento / função de carregamento, mas apenas deseja que o painel de carregamento desapareça após x segundos, use um Handle para acionar a ocultação / exibição.
fonte
findViewById(...).setVisibility(View.GONE)
linha quando eu giro a tela. Funciona como um encanto em uma orientação, mas alguma idéia de por que isso pode estar quebrando?findViewById(R.id.loadingPanel).setVisiblity(View.GONE)
na segunda atividade? Não é possível encontrar o,view
pois não hásetContnetView()
método na atividade do 2º fragmento. Obrigado!Isso geralmente é chamado de barra de progresso indeterminado progresso indeterminado ou caixa de diálogo de progresso indeterminado.
Combine isso com um Thread e um Handler para obter exatamente o que você deseja. Existem vários exemplos de como fazer isso via Google ou aqui no SO. Eu recomendo que dedique algum tempo para aprender como usar essa combinação de classes para executar uma tarefa como essa. É incrivelmente útil em muitos tipos de aplicativos e oferece uma ótima visão de como Threads e Manipuladores podem trabalhar juntos.
Vou ajudá-lo a saber como isso funciona:
O evento de carregamento inicia o diálogo:
Agora o thread faz o trabalho:
Por fim, recupere o estado do thread quando estiver concluído:
fonte
Se você não deseja aumentar outra visão apenas para indicar progresso, faça o seguinte:
O Android cuidará da visibilidade da barra de progresso.
Por exemplo, em
activity_main.xml
:E em
MainActivity.java
:}
fonte
Você pode usar esse código em amostras do firebase github .
Você não precisa editar os arquivos de layout ... basta criar uma nova classe "BaseActivity"
Na sua atividade que você deseja usar a caixa de diálogo de progresso.
Antes / depois da função que leva tempo
fonte
Para os que estão desenvolvendo em Kotlin, existe um método interessante fornecido pela biblioteca Anko que facilita o processo de exibição
ProgressDialog
!Com base nesse link:
Isso exibirá uma caixa de diálogo Progresso com o% de progresso exibido (para o qual você deve passar o
init
parâmetro também para calcular o progresso).Há também o
indeterminateProgressDialog()
método, que fornece a animação Spinning Circle indefinidamente até ser descartada:Grite para este blog que me levou a esta solução.
fonte