Cobertura da Roda de Progresso Androide

Carregar dados de um terceiro é essencial para a maioria das aplicações Android. Estes dados são normalmente buscados e carregados para a interface do usuário ao iniciar a aplicação. Uma boa maneira de mostrar ao usuário que os dados estão sendo carregados é com uma sobreposição de círculo de carregamento na interface de usuário. Durante esta sobreposição você não quer que o usuário seja capaz de interagir com a IU até que o carregamento tenha terminado.

Vamos explorar uma maneira de projetar e implementar uma sobreposição de roda de progresso durante o carregamento de dados em sua aplicação.

Para isto eu usei uma biblioteca de roda de progresso material que encontrei no GitHub. Primeiro adicione isto ao seu nível de aplicação build.gradle.

implementation 'com.pnikosis:materialish-progress:1.7

Next I criou um ficheiro XML para mostrar o Desdobramento de Progresso como uma camada que eu poderia colocar sobre a UI.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:wheel="http://schemas.android.com/apk/res-auto"
android:id="@+id/progress_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.4"
android:animateLayoutChanges="true"
android:background="@android:color/black"
android:clickable="true"
android:focusable="true"
android:visibility="gone">
<com.pnikosis.materialishprogress.ProgressWheel
android:id="@+id/progress_wheel"
android:layout_width="80dp"
android:layout_height="80dp"
android:clickable="true"
android:layout_gravity="center"
wheel:matProg_barColor="#5588FF"
wheel:matProg_progressIndeterminate="true" />
</FrameLayout>

Incluindo as duas linhas abaixo para o FrameLayout evita que a UI seja clicável. Também quer definitivamente que esta vista seja invisível durante os tempos em que não está a ser utilizada, razão pela qual definimos a visibilidade como gone. Com esta biblioteca você pode personalizar os atributos visuais da roda de progresso, verifique o repo do GitHub para mais detalhes.

android:clickable="true" 
android:focusable="true"
android:visibility="gone"

Para usar isto dentro de qualquer layout em toda a sua aplicação tudo que você tem que fazer é incluí-lo no arquivo XML do layout. A seguir você pode usar código para manipular a visibilidade.

<include layout="@layout/include_progress_overlay"/>

Para fazer este layout aparecer sobre a interface de usuário durante o carregamento temos que definir a visibilidade como visible. Quando o carregamento é feito você pode ter um método de callback para definir a visibilidade como invisible.

/* Progress overlay visible */
progressOverlay = findViewById(R.id.progress_overlay);
progressOverlay.setVisibility(View.VISIBLE);...
...
...public void setInvisible() {
progressOverlay.setVisibility(View.INVISIBLE);
}public void setVisible() {
progressOverlay.setVisibility(View.VISIBLE);
}

O produto final da sobreposição é visto abaixo!

Versobreposição da roda de progresso na minha aplicação, Veox.

Leave a Reply