Autohide макет медиаплеера в Android - PullRequest
9 голосов
/ 11 февраля 2012

Я разрабатываю медиаплеер с нестандартной раскладкой. Я хочу, чтобы интерфейс исчез после 16 секунд бездействия. Он должен появиться снова, если пользователь касается экрана. Фрагмент кода приведен ниже:

 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 секунд. Можете ли вы сказать мне, что я делаю не так?

1 Ответ

11 голосов
/ 23 февраля 2012

Извините за поздний ответ. Но вот решение. У меня была похожая проблема. Поэтому я внес следующие изменения в ваш код, пожалуйста, попробуйте это и дайте мне знать, если это поможет вам.

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();
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...