2016-03-14 22 views
1

我執行VideoViewMediacontroller像下面。如何使用videoview單擊或觸摸默認Mediacontroller的搜索欄時向用戶顯示警報消息?

MediaController mediacontroller = new MediaController(VideoViewActivity.this); 
mediacontroller.setAnchorView(mVideoView); 
mVideoView.setMediaController(mediacontroller); 

現在我想顯示一條警報當用戶點擊seekbar。 我試着用下面的代碼將onclickListener添加到seekbar中,但沒有工作。

int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android"); 
SeekBar seekbar = (SeekBar) mediacontroller.findViewById(topContainerId); 
seekbar.setOnClickListener(new View.OnClickListener() { 
    @Override 
     public void onClick(View v) { 
      Log.i(TAG, "WE HAVE LIFT OFF"); 
      showAlertMesage(); 
      } 
    }); 

但事件不與「」發射,因此警報消息和「取消」選項不顯示。

當用戶點擊/觸摸seekbar時,實現應該顯示一個提醒。seekbar不需要是可搜索的,直到用戶點擊「OK」。

如果用戶點擊「取消」,視頻播放和搜索位置不應該改變。如果點擊「確定」,它應該可以找到該位置。

所以請分享或者建議如何實現這個行爲,謝謝大家提前。

+0

seekbar.setOnTouchListener(>) – k0sh

+0

是試圖與onTouchListener,也有,但是不工作。 – Ganesh

回答

0

你的做法是正確的。但是,你需要你的影片後,做到這一點是prepared.Make使用OnPreparedListener

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mp) { 
       mVideoView.start(); 
       int topContainerId = getResources().getIdentifier("mediacontroller_progress", "id", "android"); 
       SeekBar seekbar = (SeekBar) mediacontroller.findViewById(topContainerId); 
       seekbar.setOnTouchListener(new View.OnTouchListener() { 
        @Override 
        public boolean onTouch(View v, MotionEvent event) { 
         Log.i(TAG, "WE HAVE LIFT OFF"); 
         if(seekAllowed){ //declare seekAllowed as false globally 
          return false; 
          } 
         webView1.pause(); 
         showAlertMesage(); 
         return true; 
        } 
       }); 
      } 
     }); 

對話框:

private void showAlertMesage() { 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
     alertDialogBuilder.setPositiveButton("Ok", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface arg0, int arg1) { 
         seekAllowed = true; 
         webView1.resume(); 
        } 
       }); 

     alertDialogBuilder.setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface arg0, int arg1) { 

         webView1.resume(); 
        } 
       }); 

     AlertDialog alertDialog = alertDialogBuilder.create(); 
     alertDialog.show(); 
    } 
+0

是的,它的工作,如果得到onPrepared中的seekbar對象。謝謝你, – Ganesh

0

您需要使用onSeekChangeListener

mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {     
       if(mMediaPlayer != null && fromUser){ 
        Log.i(TAG, "WE HAVE LIFT OFF"); 
        showAlertMesage(); 
       } 
      } 
    }); 
+0

嘗試與上述seekbar更改偵聽器不工作。 – Ganesh

+0

我懷疑從Mediacontroller獲取Seekbar對象是否正確?如果不是如何獲得對象並將偵聽器賦予它 – Ganesh

+0

@Ganesh是的,這可能是原因。 –

相關問題