2012-02-11 61 views
9

我正在設計具有自定義佈局的媒體播放器。我希望界面在16秒不活動後消失。如果用戶觸摸屏幕,它應該會重新出現。下面的代碼段中給出:自動隱藏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); 
} 

所述的onCreate()內,我通過調用showhideControllers(1);.啓動定時器 現在,當我點擊屏幕時,佈局會重新出現,定時器將重置。但是,如果我隨機點擊屏幕,每次點擊後計時器都不會重置,16s後佈局消失。 你能告訴我我做錯了什麼嗎?

回答

11

對不起,延遲迴復。但這是解決方案。我有類似的問題。所以我對你的代碼做了下面的修改,請試試這個,讓我知道它是否對你有幫助。

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

嘿這是工作......感謝的人.. – curiousguy 2012-02-23 09:39:13

+0

非常感謝您的答覆。 – jyotiprakash 2012-11-06 18:49:50