在进行视频播放的时候,我们需要点击视频窗口,控制台自动显示,过几秒钟不操作后,控制台自动消失,这就用到了Timer,TimerTask了。
首先我们先创建一个类继承TimerTask里面实现我们的业务逻辑。
public class DismissControlViewTimerTask extends TimerTask { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() {
//实现自己的业务逻辑我这里实现了控制台隐藏。controlView.setVisibility(View.GONE);showControl = true;//控制台显示状态 } }); }}
我们需要对窗口设置监听,点击时开始计时任务
@Override
public void onClickListener(View view) {if (showClose) {}controlView.setVisibility(View.VISIBLE);showControl = false;
} else {controlView.setVisibility(View.GONE);showControl = true;
} startDismissControlViewTimer();
public void startDismissControlViewTimer() {
DISMISS_CONTROL_VIEW_TIMER = new Timer(); mDismissControlViewTimerTask = new DismissControlViewTimerTask(); DISMISS_CONTROL_VIEW_TIMER.schedule(mDismissControlViewTimerTask, 2500);//2.5秒后启动任务 }这样在多次点击时会出现问题,我们需要每次点击的时候都从新计时。
public void startDismissControlViewTimer() { cancelDismissControlViewTimer();//取消任务 DISMISS_CONTROL_VIEW_TIMER = new Timer(); mDismissControlViewTimerTask = new DismissControlViewTimerTask(); DISMISS_CONTROL_VIEW_TIMER.schedule(mDismissControlViewTimerTask, 2500); }
public void cancelDismissControlViewTimer() { if (DISMISS_CONTROL_VIEW_TIMER != null) { DISMISS_CONTROL_VIEW_TIMER.cancel(); } if (mDismissControlViewTimerTask != null) { mDismissControlViewTimerTask.cancel(); } }
这样就实现了视频播放时候,控制条的显示和隐藏。