Android MediaPlayer自定义控制面板隐藏

时间:2011-09-28 09:59:29

标签: android show-hide control-panel

我为视频播放器创建了一个自定义控制面板。现在我想给出一个像默认MediaController的效果,当触摸屏幕时面板变得可见,并且在最后一次触摸时间之后它再次变得不可见。我可以使用这种类型的代码。

Thread thread = new Thread() {
            @Override
            public void run() {
                try {
                    Thread.sleep(60000);
                } catch (InterruptedException e) {
                }

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // make the panel invisible 
                    }
                });
            }
        };

我可以在触摸屏幕时启动线程,并在60秒后使其不可见。但在我的情况下,如果用户在这60秒之间再次触摸屏幕,则面板应在最后一次触摸后60秒后消失。如何考虑这个案例?

2 个答案:

答案 0 :(得分:1)

我建议使用RunnableHandler的组合。您可以使用Handler进行postDelayed()次呼叫,例如60秒后执行某些操作。

以下是一个例子:

private Handler mHandler = new Handler();

mHandler.post(showControls); // Call this to show the controls

private Runnable showControls = new Runnable() {    
   public void run() {
      // Code to show controls
      mHandler.removeCallbacks(showControls);
      mHandler.postDelayed(hideControls, 60000);
   }
};

private Runnable hideControls = new Runnable() {
   public void run() {
      // Code to hide the controls
   }
};

答案 1 :(得分:1)

只需删除/取消当前计时器。

顺便说一句,你不应该通过Thread来做,而是通过向Handler发布消息。这样的未来计时器任务不需要另一个线程。