2012-02-11 29 views
9

Özel bir düzen ile bir medya oynatıcı tasarlıyorum. 16 saniye kullanılmadığında arayüzün kaybolmasını istiyorum. Kullanıcı ekrana dokunduğunda tekrar görünmelidir. kod parçası aşağıda verilmiştir: onCreate() İçindeMedya oynatıcı düzenini otomatik olarak yönetin 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); 
} 

, ben showhideControllers arayarak (1) ;. zamanlayıcı başlıyorum Şimdi, ekrana tıkladığımda düzen yeniden belirir ve zamanlayıcı sıfırlanır. Ancak ekrana rasgele basarsam, her tıklamadan sonra zamanlayıcı sıfırlanmaz ve 16'lardan sonra düzen kaybolur. Bana neyi yanlış yaptığımı söyleyebilir misin?

cevap

11

Geç cevap için özür dilerim. Ama çözüm budur. Benzer bir sorun yaşıyordum. Bu yüzden kodunuzda aşağıdaki değişiklikleri yaptım, lütfen bunu deneyin ve size yardımcı olup olmadığımı bildirin.

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 bu işe yarıyor ... teşekkürler adam .. – curiousguy

+0

Cevabınız için çok teşekkürler. – jyotiprakash

İlgili konular