찾다

 >  Q&A  >  본문

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秒内又又一次触摸时间,那肯定是要刷新这个时间的啊。。的确没想到解决方法。。。

高洛峰高洛峰2802일 전771

모든 응답(6)나는 대답할 것이다

  • 迷茫

    迷茫2017-04-18 10:49:41

    타이머가 필요없습니다

    으아악

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:49:41

    하위 스레드에서 UI 스레드를 실행하고 있습니다. 이는 핸들러를 추가하는 것이 금지되어 있습니다.

    으아아아

    회신하다
    0
  • PHPz

    PHPz2017-04-18 10:49:41

    runOnUiThread

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 10:49:41

    레이아웃을 숨기려면 지연된 핸들러를 보내세요. 자식 스레드에서 UI를 작동할 때 예상치 못한 문제가 발생할 수 있습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:49:41

    Handler.postDelay() 메서드를 사용해 보세요.

    으아악

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:49:41

    직접 사용

    으아아아

    회신하다
    0
  • 취소회신하다