2012-02-11 8 views
9

Estoy diseñando un reproductor multimedia con un diseño personalizado. Quiero que la interfaz desaparezca después de 16 segundos de inactividad. Debería volver a aparecer si el usuario toca la pantalla. El fragmento de código se da a continuación:Ocultación automática del diseño del reproductor multimedia en Android

public void showhideControllers(int n) { 
    if (n == 1) { 
     /* make layout invisible */ 

     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      public void run() { 
       volumeBar.setVisibility(View.INVISIBLE); 
       audioControllView.setVisibility(View.INVISIBLE); 
       topBar.setVisibility(View.INVISIBLE); 
      } 
     }, 16000); 

    } else { 
     /* make layout visible */   
     volumeBar.setVisibility(View.VISIBLE); 
     topBar.setVisibility(View.VISIBLE); 
     audioControllView.setVisibility(View.VISIBLE); 

     showhideControllers(1); 
    } 

} 

    @Override 
public void onUserInteraction() { 
    super.onUserInteraction(); 
    showhideControllers(2); 
} 

Dentro del onCreate(), estoy empezando el temporizador llamando showhideControllers (1) ;. Ahora, cuando hago clic en la pantalla, vuelve a aparecer el diseño y el temporizador se restablece. Pero si hago clic aleatoriamente en la pantalla, el temporizador no se restablece después de cada clic y el diseño desaparece después de los 16 segundos. ¿Puede decirme qué estoy haciendo mal?

Respuesta

11

Lo lamentamos por la respuesta tardía. Pero aquí está la solución. Estaba teniendo un problema similar. Así que hice los siguientes cambios en tu código, por favor prueba esto y avísame si te ayuda.

private Runnable hideControllerThread = new Runnable() { 

    public void run() { 
      volumeBar.setVisibility(View.GONE); 
      audioControllView.setVisibility(View.GONE); 
      topBar.setVisibility(View.GONE); 
    } 
}; 


public void hideControllers() { 
     hidehandler.postDelayed(hideControllerThread, 15000); 
} 

public void showControllers() { 
     volumeBar.setVisibility(View.VISIBLE); 
     topBar.setVisibility(View.VISIBLE); 
     audioControllView.setVisibility(View.VISIBLE); 
     hidehandler.removeCallbacks(hideControllerThread); 
     hideControllers(); 
} 

@Override 
public void onUserInteraction() { 
     super.onUserInteraction(); 

     if (audioControllView.getVisibility() == View.VISIBLE) { 
      hidehandler.removeCallbacks(hideControllerThread); 
      hideControllers(); 
     } else { 
      showControllers(); 
     } 
} 
+0

hey this is working ... gracias hombre .. – curiousguy

+0

Muchas gracias por su respuesta. – jyotiprakash

Cuestiones relacionadas