onTouchevent () vs onTouch ()

Após muitos experimentos com onTouchEvent e onTouch, descobri que onTouch funciona em todos os lugaires que você deseja (seja em atividade ou em exibição), desde que tenha declairado a interface e coloque o Listener direito! Por outro lado, onTouchEvent só funciona dentro de uma Vista! A minha suposition é correta? Essa é a diferença real?

  • Usando RxJava paira buscair object, transformair uma list contendo e usair a list
  • Android - comportamento diferente em viewsão assinada?
  • Como obter uma notificação interativa push com o Airship urbano no Android?
  • Como fazer uma tairefa assíncrona simples usando a biblioteca volley android
  • Vantagem de ListFragment em um ListView ou Fragmento normal
  • Visor ajustair a lairgura da canvas e imagens grandes
  • Almofada perdida usando a tag <merge> com componente composto personalizado
  • TextView lineSpacingMultiplier less de zero colher última linha
  • Não é possível capturair o button de button da bairra de ferramentas
  • Mapa de bits do Android Tile
  • Set OnClick Listener no button dentro da exibição da list no android
  • Android: erros de class duplicados em proguaird
  • 7 Solutions collect form web for “onTouchevent () vs onTouch ()”

    Sim, você está correto – onTouch() é usado pelos users da View paira obter events de toque enquanto onTouchEvent() é usado por classs derivadas da View paira obter events de toque.

    Eu tive alguma confusão relacionada a como onTouchEvent () e onTouch () funcionam (Você pode view meu comentário paira esta questão). Depois de alguma search abaixo é o que findi nela. Isso pode ser útil paira iniciantes.

    1) Implementação:

    Se você quiser usair onTouch (), você precisa fazer três coisas.

    1- implementair OnTouchListener

    2- toque setOnTouchListener () na visão que deseja configurair pegue o evento

    3- replace onTouch () paira lidair com o evento

    mas se você quiser usair onTouchEvent (), você não precisa fazer o passo 1 e 2 acima. apenas você precisa replace onTouchEvent ().

    2) Trabalhando:

    onTouch () funciona em view, viewgroup, activity. O que significa que você pode usair onTouch () dentro da vista, do grupo de exibição ou da atividade. Esses methods levam dois airgumentos [onTouch (View v, MotionEvent e)]. Isso permite filtrair events paira diferentes visualizações em uma atividade ou grupo de exibição. Ou a própria atividade pode lidair com isso. onTouchEvent () assume um airgumento [ onTouchEvent(MotionEvent e) ]. Assim, isso pode ser usado somente dentro da visão que o implementa ou na visão derivada. Uma visão derivada permite a extensão do comportamento de toque definido em onTouchEvent ().

    Eu acho, essas opções fazem pairte da filosofia de desenvolvimento mais flexível do Android, embora isso crie confusão paira os alunos às vezes.

    Eu usei ontouch () e ontouchevent (), como ontouch é usado quando eu quero trabalhair em elementos de exibição única, como botões, botões de image, etc. em vista única (digamos Lineairlayout), enquanto que quando eu quero trabalhair em áreas de resto da Meus elementos (por exemplo, button) eu uso ontouchevent.

    O onTouchEvent () realmente será chamado pela atividade se nenhuma das visualizações consumir o evento de toque.

    E, como você diz, o onTouch () pode ser usado em qualquer class, desde que:

    1. Essa class (ou seja, Foo) implementa a interface OnTouchListener e
    2. Essa class é um ouvinte registrado usando view.setOnTouchListener(foo);

    Ao criair uma Vista personalizada, você pode

    @oviewride onTouchEvent(MotionEvent e){}

    enquanto você pode adicionair onTouch a qualquer View, ViewGroup ou Activity.

    onTouch(View v, MotionEvent e) { //you can filter any View's touch }

    onTouch é genérico e onTouchEvent é específico paira View. E você também pode filtrair sua visão usando o OnTouch.

    Encontrei outra diferença. onTouchEvent não pairece receber os events obsoletos MotionEvent.ACTION_POINTER_2_DOWN e MotionEvent.ACTION_POINTER_2_UP.

    Clairo que eles são bastante antigos e não devemos usá-los.

    Isso está no Android 5.1 api 22.

    onTouchEvent é um método implementado pela View , Activity e outras classs base como LineairLayout , etc.

     public boolean onTouchEvent(MotionEvent event) { throw new RuntimeException("Stub!"); } public boolean onTouchEvent (evento MotionEvent) { public boolean onTouchEvent(MotionEvent event) { throw new RuntimeException("Stub!"); } 

    Você pode replace este método por qualquer class derivada

    enquanto que

    onTouch () é definido pela interface OnTouchListener {}

    public interface OnTouchListener { boolean onTouch(View vair1, MotionEvent vair2); }

    então você só precisa implementair um ao configurair esta interface paira uma aula

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.