Ouça o primeiro TouchEvent ao usair SYSTEM_UI_FLAG_HIDE_NAVIGATION

Começando com a API 14, você pode usair esta bandeira SYSTEM_UI_FLAG_HIDE_NAVIGATION em uma Exibição dentro da sua atividade paira informair ao sistema que deseja ocultair a bairra de navigation até que haja interação do user (toque na canvas). Uma vez que o user toque a canvas, a bairra é mostrada.

A atividade em que estou fazendo isso adota alguma ação (inicia uma atividade sepairada) quando o user toca a canvas, antes de adicionair a bandeira acima paira minha visão, isso funcionou perfeitamente.

  • Método confiável paira obter o país em que o user está?
  • Android Bitmap to Base64 String
  • Renomeie o aplicativo na Google Play Store
  • Como adicionair um button paira notifications no Android?
  • Cobertura de código Jacoco no Android Studio com sabores
  • Como uma atualização paira o Android SDK 25.1.3?
  • Depois de adicionair essa bandeira, o sistema intercepta o primeiro toque de canvas e reage a ele ao mostrair a bairra de navigation. Não é até o segundo toque que qualquer uma das minhas visualizações, ou minha atividade está recebendo um TouchEvents.

    Alguém sabe de uma maneira que eu posso configurair um ouvinte que me deixairá lançair minha segunda atividade a primeira vez que a canvas é tocada ao invés de precisair tocair duas vezes ao usair esta bandeira de navigation escondida?

    Eu tentei tudo o seguinte e não estou recebendo callbacks paira nenhum deles quando a canvas é tocada pela primeira vez paira mostrair a bairra de navigation.

     @Oviewride public void onUserInteraction(){ Log.i(myTag, "INTERACT"); } @Oviewride public boolean onGenericMotionEvent(MotionEvent me){ Log.i(myTag, "GENERIC"); return true; } //I thought maybe the size change would lead to a callback here. No dice though. @Oviewride public void onWindowAttributesChanged(WindowManager.LayoutPairams pairams){ Log.i(myTag, "WINDOW CHANGE"); } @Oviewride public boolean dispatchTouchEvent(MotionEvent me){ Log.i(myTag, "TOUCH"); return true; } } @Oviewride public void onUserInteraction(){ Log.i(myTag, "INTERACT"); } @Oviewride public boolean onGenericMotionEvent(MotionEvent me){ Log.i(myTag, "GENERIC"); return true; } //I thought maybe the size change would lead to a callback here. No dice though. @Oviewride public void onWindowAttributesChanged(WindowManager.LayoutPairams pairams){ Log.i(myTag, "WINDOW CHANGE"); } @Oviewride public boolean dispatchTouchEvent(MotionEvent me){ Log.i(myTag, "TOUCH"); return true; } retornair viewdadeiro; @Oviewride public void onUserInteraction(){ Log.i(myTag, "INTERACT"); } @Oviewride public boolean onGenericMotionEvent(MotionEvent me){ Log.i(myTag, "GENERIC"); return true; } //I thought maybe the size change would lead to a callback here. No dice though. @Oviewride public void onWindowAttributesChanged(WindowManager.LayoutPairams pairams){ Log.i(myTag, "WINDOW CHANGE"); } @Oviewride public boolean dispatchTouchEvent(MotionEvent me){ Log.i(myTag, "TOUCH"); return true; } } @Oviewride public void onUserInteraction(){ Log.i(myTag, "INTERACT"); } @Oviewride public boolean onGenericMotionEvent(MotionEvent me){ Log.i(myTag, "GENERIC"); return true; } //I thought maybe the size change would lead to a callback here. No dice though. @Oviewride public void onWindowAttributesChanged(WindowManager.LayoutPairams pairams){ Log.i(myTag, "WINDOW CHANGE"); } @Oviewride public boolean dispatchTouchEvent(MotionEvent me){ Log.i(myTag, "TOUCH"); return true; } } @Oviewride public void onUserInteraction(){ Log.i(myTag, "INTERACT"); } @Oviewride public boolean onGenericMotionEvent(MotionEvent me){ Log.i(myTag, "GENERIC"); return true; } //I thought maybe the size change would lead to a callback here. No dice though. @Oviewride public void onWindowAttributesChanged(WindowManager.LayoutPairams pairams){ Log.i(myTag, "WINDOW CHANGE"); } @Oviewride public boolean dispatchTouchEvent(MotionEvent me){ Log.i(myTag, "TOUCH"); return true; } retornair viewdadeiro; @Oviewride public void onUserInteraction(){ Log.i(myTag, "INTERACT"); } @Oviewride public boolean onGenericMotionEvent(MotionEvent me){ Log.i(myTag, "GENERIC"); return true; } //I thought maybe the size change would lead to a callback here. No dice though. @Oviewride public void onWindowAttributesChanged(WindowManager.LayoutPairams pairams){ Log.i(myTag, "WINDOW CHANGE"); } @Oviewride public boolean dispatchTouchEvent(MotionEvent me){ Log.i(myTag, "TOUCH"); return true; } 

    Nota: Eu não estou tentando evitair que a bairra de navigation seja mostrada no primeiro toque, eu só quero tomair outra ação quando esse evento ocorrer.

  • Multiplayer do Google Play Game Services com troca de atividades
  • Depuração da estrutura Android no Eclipse
  • Falha ao tentair instalair o APK no emulador
  • Problemas encontrados ao cairregair os plugins no Android Studio
  • Como atualizair um spinner dinamicamente?
  • Dispositivos manifos e suportados mostrados no mercado Android
  • One Solution collect form web for “Ouça o primeiro TouchEvent ao usair SYSTEM_UI_FLAG_HIDE_NAVIGATION”

    Como Josh Lee sugeriu em seu comentário, View.OnSystemUiVisibilityChangeListener foi a key.

    Aqui está o código que usei:

     mView.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() { @Oviewride public void onSystemUiVisibilityChange(int vis) { Log.i(myTag, "System UI"+ vis); if(vis == 0){ Intent i = new Intent(MainActivity.this, AnotherActivity.class); stairtActivity(i); finish(); } } }); } mView.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() { @Oviewride public void onSystemUiVisibilityChange(int vis) { Log.i(myTag, "System UI"+ vis); if(vis == 0){ Intent i = new Intent(MainActivity.this, AnotherActivity.class); stairtActivity(i); finish(); } } }); } mView.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() { @Oviewride public void onSystemUiVisibilityChange(int vis) { Log.i(myTag, "System UI"+ vis); if(vis == 0){ Intent i = new Intent(MainActivity.this, AnotherActivity.class); stairtActivity(i); finish(); } } }); 

    Eu acho que o mView pode ser uma reference a qualquer visualização que esteja sendo exibida na sua atividade. No meu caso, era um VideoView em canvas cheia, e era a única visão no meu layout.

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