在全屏模式下,滑动手势无法在YouTubePlayerView中运行

时间:2013-06-10 19:59:24

标签: android youtube-api android-youtube-api

我正在使用YouTube API,我希望在全屏模式下在Swipe上应用YouTubePlayerView左右手势。

Swipe处于全屏模式时,Android版本4.0 +中的YouTubePlayerView手势不起作用。

请帮我解决这个问题。提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试扩展YoutubePlayerView和覆盖onTouchEvent并返回false

答案 1 :(得分:1)

迟到总比没有好。

问题相当于css中的z-index。全屏视频是在活动开始后添加的,并且位于视图堆栈的最顶部,因此一切都在它下面。

在这个例子中,我们将在所有内容之上放置一个全屏不可见的对话框,以便我们可以将任何我们想要的手势附加到其视图(布局)并在我们的活动中执行回调。

  1. 等待视频添加到屏幕。您可以为当前播放器设置PlayerStateChangeListener并使用onVideoStarted回调方法执行以下代码。
  2. 以下代码将添加一个透明对话框,该对话框将位于视图层次结构的顶部(甚至高于视频):

    // Add listeners to YouTubePlayer instance
    player.setPlayerStateChangeListener(new PlayerStateChangeListener() {
       //... other methods 
         @Override
         public void onVideoStarted() {      
    
            // Setting style with no title (defined later in the answer)
            BasicPlayerActivity.this.mDialog = new Dialog(BasicPlayerActivity.this, R.style.AppTheme_NoActionBar_Fullscreen);     BasicPlayerActivity.this.mDialog.setContentView(R.layout.overlay_layout);
            View v = BasicPlayerActivity.this.mDialog.findViewById(R.id.container);
    
            //Adding touch listener (OR ANY LISTENER YOU WANT)  
            v.setOnTouchListener(new OnSwipeTouchListener(BasicPlayerActivity.this){        
                public void onSwipeRight() {
                    // TODO: Previous Video or whatever
                }
    
                public void onSwipeLeft() {
                    // TODO: Next video or whatever
                }
            });
    
            //Setting transparent dialog background (invisible)                                                                       
            BasicPlayerActivity.this.mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
            BasicPlayerActivity.this.mDialog.show();
    }
    });
    
    1. 在styles.xml

          <style name="AppTheme.NoActionBar">
              <item name="windowActionBar">false</item>
              <item name="windowNoTitle">true</item>
          </style>
      
          <style name="AppTheme.NoActionBar.Fullscreen">
              <item name="android:windowFullscreen">true</item>
              <item name="android:backgroundDimEnabled">false</item>
              <item name="android:backgroundDimAmount">0</item>
          </style>
      
  3. 您还可以设置取消回叫或其他任何操作。这取决于你。

    我希望这会对你或任何有这个问题的人有所帮助。