2012-02-11 4 views
9

Я проектирую медиаплеер с пользовательским макетом. Я хочу, чтобы интерфейс исчез после 16 лет бездействия. Он должен появиться, если пользователь коснется экрана. Фрагмент кода приведен ниже:Autohide расположение медиаплеера в 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) ;. Теперь, когда я нажимаю на экран, макет снова появляется и таймер сбрасывается. Но если я случайно нажимаю на экран, таймер не сбрасывается после каждого щелчка, и макет исчезает после 16 секунд. Можете ли вы сказать мне, что я делаю неправильно?

ответ

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

+0

Большое спасибо за ваш ответ. – jyotiprakash

Смежные вопросы