No Android, Can One interceptairá events-key globalmente antes que eles alcancem a visão infantil que tem foco?

Na maioria das circunstâncias, quero que os events-key sejam processados ​​pela visão (infantil) que atualmente tem foco, que é o comportamento padrão, e também é o que eu atualmente implementei.

No entanto, em certas circunstâncias muito específicas, gostairia de interceptair e manipulair temporairiamente todos os events-key (incluindo especificamente aqueles normalmente tratados pelas visualizações filho) na minha atividade atual ou, na sua falta, na minha visão raiz (não importa , desde que sejam processados ​​globalmente – eu não me importo com botões de hairdwaire como o volume +/-, pois estes não são manipulados em nenhuma das minhas visualizações paira crianças de qualquer maneira).

  • HTTPS com problemas de certificate SSL auto-assinados ... Solução ou forma melhor?
  • Como forçair uma mudança de orientação em um teste de Instrumentação Android?
  • assinando aplicativos automaticamente com senha em formiga
  • Android Back Button paira atividade específica
  • Android NumberPicker sem cursor intermitente
  • Compairtilhair o callback não funciona com o Facebook SDK 4 Android
  • Paira events de toque , temos onInterceptTouchEvent (), que permite que um ViewGroup assista a events de toque à medida que eles são enviados paira vistas de criança e paira bloqueair a recepção desses events (quando desejado) pelas visualizações infantis paira as quais eles se destinam.

    Infelizmente, não consigo encontrair nada análogo a onInterceptTouchEvent () paira events-key. Estou faltando alguma coisa óbvia, ou isso é uma assimetria real no operating system?

    Clairo, eu poderia apenas ligair o código do manipulador de events key atual de cada visualização de criança paira chamair diretamente um método na atividade principal paira lidair com o evento se quiser, e paira que esse método de nível de atividade retorna um boolean que indique se ele tratou o evento. Então, a visão infantil poderia lidair com o evento se e somente se o método de atividade que ele invocou não tivesse sido tratado.

    Mas eu estou esperando que haja uma maneira mais limpa de simplesmente interceptair o tráfego em seu path "paira baixo" da hierairquia paira a visão infantil, assim como onInterceptTouchEvent () faz paira events de toque.

  • Como posso sobrepor uma vista nativa em cima do CordovaWebView do PhoneGap no Android?
  • Evento final de dialog de dialog
  • ViewPager PagerObserview não foi registrado
  • Pacote interno inserível que é adicionado ao Paircel
  • Função de passagem como pairâmetro em java
  • Erro de fiapos em Okio
  • 2 Solutions collect form web for “No Android, Can One interceptairá events-key globalmente antes que eles alcancem a visão infantil que tem foco?”

    Todos os widgets / Views pairecem implementair o KeyEvent.Callback , que tem methods a serem chamados paira a key paira baixo, pressione longamente, múltiplo e keyboard. Todos esses methods retornam valores booleans explicados como:

    Se você processu o evento, volte viewdadeiro. Se você quiser permitir que o evento seja manipulado pelo próximo receptor, fale falso.

    Eu acho que você pode tentair replace esses methods em componentes pai.

    O outro é dispatchKeyEvent() de View que lida com o envio de events no path de foco. Substituir isso também pode ser tentado.

    Substituindo dispatchKeyEvent em um ViewGroup que é ancestral paira as obras de View s to disabled.

    Estou usando o seguinte ~.

     public static class TvPrefsContainer extends FrameLayout { private boolean isActive; // ie will dispatch keyboaird events to focused children // snip @Oviewride public boolean dispatchKeyEvent(KeyEvent event) { return isActive && super.dispatchKeyEvent(event); } } public static class TvPrefs extends PreferenceFragment { @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.tv_prefs); } } private void togglePrefsVis() { tvPrefsContainer.animate() .alpha(isPrefsVisible ? 0 : 1) .translationX(isPrefsVisible ? tvPrefsContainer.getMeasuredWidth() : 0) .stairt(); tvPrefsContainer.isActive = isPrefsVisible; isPrefsVisible = !isPrefsVisible; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.