O mecanismo de distribuição de eventos do Android faz com que você goste dele facilmente.

Estou me preparando para a entrevista recentemente. Revi muito. Use o vernáculo mais simples para expressar os novos pontos de conhecimento aprendidos com o passado. Um é registrar. Em segundo lugar, se pode ajudar a todos, melhor

1. Três métodos importantes de distribuição de eventos

Primeiro de tudo, eu construí aleatoriamente um ViewGroup, os três métodos importantes são

  • dispatchTouchEvent
  • onInterceptTouchEvent
  • onTouchEvent
public class MyViewGroup extends ViewGroup {
    
    
    //...省略部分代码
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
    
    
        return super.dispatchTouchEvent(ev);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
    
    
        return super.onInterceptTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
    
    
        return super.onTouchEvent(event);
    }
}

Em seguida, dê uma breve descrição desses 3 métodos

método efeito Duração da chamada
dispathTouchEvent () Distribuir (entregar) eventos de clique Quando o evento click puder ser passado para a View atual, o método será chamado
onInterceptTouchEvent () Determine se um evento é interceptado (somente no ViewGroup, o View normal não possui este método) Chamado dentro de dispathTouchEvent ()
onTouchEvent () Tratamento de eventos de clique Chamado dentro de dispathTouchEvent ()

A ordem de distribuição do evento é Activity (Window) -> ViewGroup -> View


2. Amplie a movimentação e analise o processo de distribuição de eventos.


Na foto:

  • super: chame o método pai
  • verdadeiro: evento de consumo, ou seja, o evento não continua a passar
  • false: o evento não é consumido e não continua a ser transmitido / entregue ao controle pai onTouchEvent () para processamento

Observe a figura acima e a análise é a seguinte. Existem 3 etapas no total:


Etapa 1 (na atividade):

O evento dispatchTouchEvent () em Atividade
retorna o valor:
verdadeiro / falso -------> evento de consumo (aqui falso também é evento de consumo)
super -------------> evento é emitido Vá para ViewGroup e chame dispatchTouchEvent () de ViewGroup


Etapa 2 (no ViewGroup)

O
valor de retorno dispatchTouchEvent () do evento no ViewGroup :
true --------------> Consumption event
false -------------> Nenhum evento é consumido, não mais Envie-o para onTouchEvent () do controle pai para lidar com
super -------------> O evento é enviado para onInterceptTouchEvent () do ViewGroup atual

O
valor de retorno do evento onInterceptTouchEvent () no ViewGroup :
true --------------> O evento é entregue ao onTouchEvent () do ViewGroup atual.
False / super -----> O evento é entregue a Visão filha, chame dispatchTouchEvent () da visão filha

O
valor de retorno de onTouchEvent () do evento no ViewGroup :
true --------------> Evento de consumo
false / super -----> Nenhum evento é consumido, nem enviado e entregue ao controle pai Tratamento de OnTouchEvent ()


Etapa 3 (na visualização filha)

O
valor de retorno dispatchTouchEvent () do evento na Visualização :
true --------------> Evento de consumo
false -------------> Nenhum evento é consumido, não está inativo Envie-o para onTouchEvent () do controle pai para lidar com
super -------------> O evento é enviado para onTouchEvent () da Visualização atual

O
valor de retorno onTouchEvent () do evento na Visualização :
true --------------> Evento de consumo
false / super -----> Não consumir o evento, nem enviá-lo para o controle pai Tratamento de OnTouchEvent ()


Depois de ler essas análises, você pode acessar o mecanismo de distribuição de eventos casualmente! ! Visão geral de 3 etapas. Você está animado para gostar?

Acho que você gosta

Origin blog.csdn.net/leol_2/article/details/102798906
Recomendado
Clasificación