java - 做一个视频播放器,想实现一个功能,如果3秒不点击屏幕任何,则下方一个界面布局(显示按钮那些的)自动消失。
本文介绍了java - 做一个视频播放器,想实现一个功能,如果3秒不点击屏幕任何,则下方一个界面布局(显示按钮那些的)自动消失。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
就是这个功能不知道怎么实现,就像很多视频播放器那种,如果点击屏幕任何,下方界面布局(显示按钮那些的)就显示出来,然后等几秒钟没有点击,就消失。
先贴个代码:
sv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (linearLayout.getVisibility()==View.INVISIBLE)
linearLayout.setVisibility(View.VISIBLE);
Timer timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
linearLayout.setVisibility(View.VISIBLE);
}
},3000);
return false;
}
});
这种方法不行的,会抛出异常,但是我感觉这个思路没有错,肯定是设置一个surfaceview的触摸事件监听器,但是真的不知道如何实现。以上抛出只有原本的线程能操作ui线程,也就是说主要问题是timer这个线程无法操作setvisibility,但是如果不加入其它线程,又如何实现这个功能,不可能在监听器里面用一个延迟函数,如果在这3秒内又又一次触摸时间,那肯定是要刷新这个时间的啊。。的确没想到解决方法。。。
解决方案
不需要Timer
Handler mHandler = new Handler();
Runnable mRunnable;
mRunnable = new Runnable() {
@Override
public void run() {
//隐藏view
}
};
myView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
mHandler.removeCallbacks(mRunnable);
//显示你的view
}else if(event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL){
mHandler.postDelayed(mRunnable,3000);
}
return false;
}
});
这篇关于java - 做一个视频播放器,想实现一个功能,如果3秒不点击屏幕任何,则下方一个界面布局(显示按钮那些的)自动消失。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文