Arrastar e soltar Android: aprimorando a interação do usuário

Neste artigo, você aprenderá como implementar o recurso arrastar e soltar do Android . Você também descobrirá os benefícios de usar esse recurso e as práticas recomendadas para garantir uma experiência de usuário ideal.

O Android Drag and Drop Framework suporta arrastar e soltar em muitos aplicativos. Ele permite que você crie interfaces de usuário intuitivas e envolventes, permitindo que os usuários arrastem e soltem itens dentro ou entre aplicativos. É um recurso amplamente utilizado em aplicativos móveis e da web.

A funcionalidade de arrastar e soltar no Android é baseada nas seguintes classes:

Aulas Visão geral
ArrastarShadowBuilder Essa classe é usada para criar uma representação visual dos dados que estão sendo arrastados. Ele estende a classe View.DragShadowBuilder e substitui o método onDrawShadow() para desenhar a sombra na tela.
DragEvent Essa classe representa um evento de arrastar que ocorre durante o processo de arrastar e soltar. Ele contém informações sobre a ação, a posição atual do evento de arrastar e a visualização de que o evento acabou.
OnDragListener Essa interface é usada para lidar com eventos de arrastar. Ele contém dois métodos que são onDrag() e onDragEvent(). O método onDrag() é chamado quando o usuário começa a arrastar um item, e o método onDragEvent() é chamado quando ocorre o evento arrastar.


Processo de arrastar e soltar do Android

O arrastar e soltar do Android envolve as seguintes etapas:

  1. O usuário inicia a operação de arrastar pressionando e segurando uma visualização. Durante esse evento, o método startDrag() é invocado, o que cria um objeto DragShadowBuilder que mostra visualmente a visualização arrastada.
  2. Quando o usuário move a view, o sistema gera eventos ACTION_DRAG_ENTERED , indicando que o arrasto entrou em uma nova área. A área de destino onde a exibição pode ser descartada geralmente é destacada por esse evento.
  3. Em resposta ao usuário mover a visualização, o sistema gera eventos ACTION_DRAG_LOCATION , indicando a posição atual. Neste caso, a representação visual da vista arrastada pode ser atualizada.
  4. O sistema gera um evento ACTION_DRAG_EXITED quando o usuário move a exibição para fora da área de destino.
  5. Os eventos ACTION_DROP são gerados quando o usuário libera a visualização sobre a área de destino, indicando que a visualização foi descartada. Usando esse evento, você pode atualizar o estado do aplicativo com base na queda.
  6. Quando a operação de arrastar termina, o sistema gera um evento ACTION_DRAG_ENDED . Usando este evento, todos os recursos associados ao arrastar podem ser limpos.

A classe DragEvent

No Android , DragEvent representa um evento que ocorre durante as operações de arrastar e soltar.

São fornecidas informações sobre uma operação de arrastar e soltar, incluindo informações sobre a ação, a posição do evento de arrastar e os dados que estão sendo arrastados.

Constantes

Aqui estão as constantes presentes na classe DragEvent :

Constantes Visão geral
ACTION_DRAG_STARTED Introduzido quando uma operação de arrastar é iniciada pela primeira vez. Geralmente, configura a imagem de arrastar, bem como qualquer outro feedback visual.
ACTION_DRAG_ENTERED Esta ação é enviada quando uma nova visualização é inserida pela operação de arrastar. Na maioria dos casos, é usado para destacar a exibição sobre a qual os dados estão sendo arrastados.
ACTION_DRAG_LOCATION Envia esta ação quando a operação de arrastar se move sobre uma exibição. O feedback visual normalmente é atualizado para refletir a posição atual do arrasto.
ACTION_DRAG_EXITED Uma operação de arrastar deixa uma exibição quando esta ação é enviada. Normalmente, isso é usado para remover qualquer feedback visual que foi adicionado à exibição quando a operação foi inserida.
ACTION_DROP Envia uma ação quando os dados são soltos em uma exibição. Ele normalmente lida com dados descartados e limpa qualquer feedback visual adicionado durante a operação.
ACTION_DRAG_ENDED Uma indicação de que a operação de arrastar e soltar foi concluída.

Métodos DragEvent

Os métodos da classe DragEvent são examinados abaixo:

Métodos Visão geral
getAction() Retorna o tipo de ação DragEvent .
getClipData() Retorna o objeto ClipData associado ao evento de arrastar.
obterX(), obterY() Esses métodos retornam as coordenadas X e Y do evento de arrastar em relação à View que recebe o evento de arrastar.
obterResultado() Retorna um valor booleano que indica se a queda foi bem-sucedida.
setResult() O resultado de arrastar e soltar pode ser definido usando este método.
getLocalState() Retorna um Object que representa o estado local da operação de arrastar e soltar.
setDragShadow() Use este método para definir um DragShadow personalizado .
getText() Retorna os dados de texto associados ao evento de arrastar.
getClipDescription() Retorna o objeto ClipDescription associado ao evento de arrastar.
getDragFlags() Retorna os sinalizadores associados ao evento de arrastar .

Ouvindo eventos de arrastar

Precisamos implementar a interface OnDragListener em um aplicativo Android para ouvir eventos de arrastar.

O Android fornece a interface OnDragListener para detectar eventos de arrastar em visualizações.

OnDragListener escuta eventos de arrastar e soltar e está associado à visualização que recebe os dados.

Essa interface fornece dois métodos para implementar:

Métodos Visão geral
onDrag() O método onDrag() é chamado quando ocorre um evento de arrastar. Este método recebe dois parâmetros: a view que recebe o evento de arrastar e o objeto DragEvent que contém os detalhes do evento.
onDragExited() Quando um usuário sai dos limites de uma view que recebe eventos de arrastar, esse método é chamado.

Um breve exemplo de uso do OnDragListener para implementar a funcionalidade de arrastar e soltar no Android é mostrado abaixo.

Primeiro, vamos criar duas visualizações: uma visualização que queremos arrastar e outra que servirá como nosso destino de soltura.

Para este exemplo, usaremos dois objetos TextView. Para facilitar a diferenciação entre as duas visualizações, adicionaremos um desenhável de fundo a cada uma delas.

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/draggable_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Drag me"
android:padding="16dp"
android:background="@drawable/draggable_background" />

<TextView
android:id="@+id/drop_target"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Drop here"
android:padding="16dp"
android:background="@drawable/drop_target_background" />

</LinearLayout>

Depois de criar as duas exibições, implementaremos a interface OnDragListener para a exibição do destino de soltar.

Ao fazer isso, podemos manipular o evento drop real no método onDrag().

Para lidar com eventos de arrastar específicos, podemos adicionar código ao bloco case apropriado.

TextView draggableText = findViewById(R.id.draggable_text);
TextView dropTarget = findViewById(R.id.drop_target);

dropTarget.setOnDragListener(new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
// Code to handle drag started event
return true;

case DragEvent.ACTION_DRAG_ENTERED:
// Code to handle drag entered event
return true;

case DragEvent.ACTION_DRAG_LOCATION:
// Code to handle drag location event
return true;

case DragEvent.ACTION_DRAG_EXITED:
// Code to handle drag exited event
return true;

case DragEvent.ACTION_DROP:
// Code to handle drop event
return true;

case DragEvent.ACTION_DRAG_ENDED:
// Code to handle drag ended event
return true;

default:
return false;
}
}
});

Agora, podemos tornar a exibição arrastável realmente arrastável implementando um View.OnLongClickListener para a exibição arrastável.

Dentro do método onLongClick() , iniciaremos a operação de arrastar criando um objeto View.DragShadowBuilder para fornecer uma representação visual da visualização arrastada e chamando startDragAndDrop(). Este método usa um objeto ClipData e um objeto View.DragShadowBuilder como parâmetros. O objeto ClipData contém os dados a serem arrastados e o objeto View.DragShadowBuilder fornece uma representação visual da exibição arrastada durante a operação de arrastar.

draggableText.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDragAndDrop(null, shadowBuilder, null, 0);
return true;
}
});

Práticas recomendadas de arrastar e soltar do Android

Para garantir que a funcionalidade de arrastar e soltar em seu aplicativo seja ideal, é importante seguir estas práticas recomendadas:

  • Forneça feedback visual ao usuário durante a operação de arrastar e soltar, como uma dica visual para indicar o destino de soltar.
  • Certifique-se de que o recurso de arrastar e soltar seja acessível a usuários com deficiências, fornecendo formas alternativas de interagir com a IU .
  • Otimize o recurso de arrastar e soltar para desempenho, minimizando redesenhos e animações desnecessárias.
  • Mantenha a consistência no comportamento de arrastar e soltar em todas as exibições e garanta que o usuário possa entender facilmente como usar o recurso.

Vantagens

Algumas das vantagens de arrastar e soltar no Android são:

Vantagens Visão geral
Experiência do usuário aprimorada A funcionalidade de arrastar e soltar pode fornecer uma experiência de usuário mais intuitiva e envolvente, pois permite que os usuários interajam com o conteúdo na tela de maneira natural.
Fácil manipulação de dados Com arrastar e soltar, os usuários podem facilmente mover itens ou dados na tela, facilitando a organização, categorização ou exclusão de itens.
Produtividade aumentada Ao usar arrastar e soltar, os usuários podem concluir tarefas com mais rapidez e eficiência, especialmente ao lidar com grandes quantidades de dados.
Compatibilidade com telas sensíveis ao toque Arrastar e soltar é adequado para telas sensíveis ao toque, pois permite que os usuários manipulem objetos diretamente na tela.

Neste artigo, você aprendeu como implementar a funcionalidade de arrastar e soltar em seu aplicativo Android. Você descobriu as três classes principais usadas em arrastar e soltar: DragShadowBuilder, DragEvent e OnDragListener. Além disso, passamos pelas etapas envolvidas na implementação de arrastar e soltar em um aplicativo Android.

Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone