Allan Day
aday@gnome.org
Calum Benson
Adam Elman
Seth Nickell
Colin Robertson

This work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.

Georges Neto
georges.stavracas@gmail.com 2014,
Rafael Fontenelle
rafaelff@gnome.org 2017-2021

# Barras de progresso

Barras de progresso indicam que uma tarefa está sendo executada, juntamente com quanto progresso foi feito durante a tarefa.

# Quando usar

Geralmente, é necessário indicar que o progresso está ocorrendo sempre que uma operação leva mais de três segundos. Isso garante que os usuários entendam que precisam aguardar e que um erro não ocorreu.

Ao indicar o progresso, a escolha principal é entre uma barra de progresso ou um spinner de progresso. As barras de progresso indicam quanto de uma tarefa foi concluída. Eles são, portanto, úteis para tarefas que demoram muito tempo. Como regra geral, use apenas uma barra de progresso para tarefas que levam mais de 30 segundos. Para tarefas com períodos mais curtos, os spinners de progresso costumam ser uma opção melhor.

# Types

Há três tipos de barras de progresso:

Tempo restante: estas indicam quanto tempo resta em uma operação.

Tipo típico: estas indicam quanto tempo resta, com base em uma estimativa da duração esperada.

Indeterminado: estas indicam apenas que uma operação está em andamento, não quanto tempo levará.

Precisão é preferível para barras de progresso. Sempre que possível, use uma barra de progresso de tempo restante, seguida de tempo típico. Tente evitar o uso de barras de progresso indeterminadas.

# Texto de progresso

Cada barra de progresso pode incluir uma descrição de texto. Este texto deve fornecer uma ideia de quanto da tarefa foi concluída. Ao decidir sobre o texto do progresso:

Sempre considere o que é mais relevante e interessante para o usuário.

Muitas vezes, é melhor fornecer informações específicas em vez de uma porcentagem sem unidade. Por exemplo, 13 of 19 images rotated ou 12.1 of 30 MB downloaded em vez de 13% complete.

Para tarefas de longa duração, pode ser desejável mostrar uma estimativa do tempo restante no texto da barra de progresso. Se outras informações relevantes não estiverem disponíveis, isso pode ser mostrado por conta própria. Alternativamente, pode aparecer ao lado do texto sobre o progresso da tarefa; no entanto, tenha cuidado para não sobrecarregar o usuário com informações demais ao fazer isso e use as convenções tipográficas para diferenciar as informações mais úteis.

Se o tempo restante for uma estimativa, use a palavra about. Por exemplo: About 3 minutes left.

# Estágios de tarefas

Algumas tarefas podem ser constituídas por uma série sequencial de etapas, cada uma com opções diferentes para a estimativa de tempo. Pode ser possível estimar o tempo restante para parte de uma tarefa, mas não outra parte, por exemplo. Nestas situações:

Apenas comunique os diferentes estágios em uma tarefa quando eles forem relevantes para um usuário. De um modo geral, isso não será necessário, e não é necessário ou desejável comunicar etapas separadas em uma tarefa.

Se uma tarefa incluir estágios de tempo restante e de tempo típico, tente criar uma barra de progresso de tempo típico composta única.

Se uma tarefa incluir um estágio de progresso indeterminado, a barra de progresso poderá mostrar um progresso indeterminado para parte da tarefa. No entanto, você deve evitar mostrar barras de progresso indeterminadas por longos períodos de tempo e deve tentar manter o número de alterações no modo de barra de progresso em um mínimo absoluto. Evite o progresso indeterminado sempre que possível.

# Subtarefas

Se uma tarefa for composta de várias subtarefas (como baixar vários arquivos simultaneamente), geralmente é aconselhável mostrar uma única barra de progresso que indica o progresso composto para a tarefa geral. No entanto, existem algumas situações em que isso pode não ser o caso:

Se é realmente útil para o usuário conhecer o progresso dentro de cada subtarefa individual. (Como alternativa, a conclusão de cada subtarefa pode ser indicada com o texto do progresso.)

Se for necessário pausar ou interromper uma subtarefa (consulte as diretrizes gerais abaixo).

Se subtarefas já estiverem indicadas na interface do usuário do seu aplicativo. Nesse caso, pode ser menos prejudicial mostrar um progresso para cada item em linha.

Ao mostrar barras de progresso para subtarefas:

Cada subtarefa deve estar de acordo com as diretrizes de uso das barras de progresso (consulte quando usar, acima).

De um modo geral, não é necessário mostrar uma barra de progresso para o progresso geral através do conjunto de tarefas.

# Janelas de progresso

No passado, as janelas de progresso eram uma maneira popular de apresentar barras de progresso. Essas janelas secundárias apareceriam durante a duração de uma tarefa e conteriam uma ou mais barras de progresso. Em geral, as janelas de progresso não são recomendadas, pois a consequência de fechar a janela pode não ser clara e elas podem obscurecer controles e conteúdo úteis.

Sempre que possível, as barras de progresso devem ser exibidas em linha e devem ter uma relação visual próxima com os itens de conteúdo ou controles que representam a tarefa em andamento.

# Diretrizes gerais

Se a operação em andamento for potencialmente destrutiva ou consome muitos recursos, considere colocar um botão de pausa e/ou cancelar próximo à barra de progresso.

Assegure-se de que as barras de progresso de tempo restante e de tempo típico meçam o tempo total ou o trabalho total de uma operação, não apenas o de uma única etapa.

Atualize as barras de progresso restantes do tempo quando ocorrerem alterações que farão com que a operação seja concluída mais rapidamente ou mais lentamente.

Ao usar uma barra de progresso de tempo típico, se seu aplicativo superestimar a quantidade de trabalho concluída, o comprimento da barra pode indicar quase concluída até que a operação seja concluída. Se seu aplicativo subestimar quanto trabalho está concluído, preencha a parte restante da barra quando a operação estiver concluída.

# Referência de API

GtkProgressBar