10

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

当处于全屏模式时,手势在4.0+ 版本Swipe中不起作用。AndroidYouTubePlayerView

请帮我解决一下这个。提前致谢。

4

2 回答 2

1

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

于 2014-06-28T15:02:42.000 回答
1

迟到总比不到好。

这个问题相当于css中的z-index。全屏视频是在活动启动后添加的,位于视图堆栈的最顶部,因此所有内容都在它之下。

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

  1. 等待视频添加到屏幕上。您可以将 a 设置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>
      

您还可以设置取消回调或其他任何操作。它是由你决定。

我希望这会对您或遇到此问题的任何人有所帮助。

于 2017-08-09T15:44:41.803 回答