0

我已经在videoview上用seekbar创建了自定义控制器。这些控制器处于线性布局并且工作正常。现在我想像其他任何Android播放器一样设置此自定义控制器布局的可见性。就像当我开始播放视频时,它会出现7秒钟然后消失,当用户触摸视频时,它会出现并保持7秒钟,然后再次触摸它会消失。我的代码是VideoView CustomControllers可见性

myMusicView.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View arg0, MotionEvent arg1) { 
       // TODO Auto-generated method stub 
       try { 
        if (SystemClock.elapsedRealtime() - mLastClickTime < 700){ 
         return false; 
        } 
        mLastClickTime = SystemClock.elapsedRealtime(); 
        if(isShowing){ 
         musicControllBar.setVisibility(View.GONE); 

         isShowing=false; 
        }else{ 
         musicControllBar.setVisibility(View.VISIBLE); 

         HideLayout(); 
         isShowing=true; 
        } 
       } catch (Exception e) { 
        // TODO: handle exception 
       } 



       return false; 
      } 
     }); 

private void HideLayout() { 

    try { 
     musicControllBar.setVisibility(View.VISIBLE); 
     final Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       musicControllBar.setVisibility(View.INVISIBLE); 
      } 
     }, 7000); 
    } catch (Exception e) { 
     // TODO: handle exception 
    } 


    } 

回答

0
1) First add this code as mention in above answer 
private void loadTimer(){ 
try{ 
musicControlBar.setVisibility(View.VISIBLE); 
countDownTimer = new CountDownTimer(7000, 1000){ 

    @Override 
     public void onTick(long millisUntilFinished) { 

      //do nothing 
     } 

     @Override 
     public void onFinish() { 
      //this hide your layout when reach at 7 sec 
      musicControllBar.setVisibility(View.INVISIBLE); 
     } 
    }.start(); 

}catch(Exception e){} 
} 
2) Try onClickListener at VideoView in onClick() repeat your above code 

        if(isShowing){ 
         musicControllBar.setVisibility(View.GONE); 

         isShowing=false; 
        }else{ 

         if(countDownTimer!=null){ 
          countDownTimer.cancel(); 
         loadTimer();//start timer 
         } 
         musicControllBar.setVisibility(View.VISIBLE); 

         isShowing=true; 
        } 
+1

它很好用。 – user3636100

+0

欢迎先生... –

0

而不是使用处理程序,我建议使用CountDownTimer。

声明变量全局班级为CountDownTimer:

CountDownTimer countDownTimer; 

进行以下修改您的HideLayout()函数:

try{ 
musicControlBar.setVisibility(View.VISIBLE); 
countDownTimer = new CountDownTimer(7000, 1000){ 

    @Override 
     public void onTick(long millisUntilFinished) { 

      //do nothing 
     } 

     @Override 
     public void onFinish() { 

      musicControllBar.setVisibility(View.INVISIBLE); 
     } 
    }.start(); 

}catch(Exception e){} 

此外,更换你的代码

if (SystemClock.elapsedRealtime() - mLastClickTime < 700){ 
          return false; 
} 

countDownTimer.cancel(); 
+1

这是帮助和作品 – user3636100