滚动时,YouTubePlayerView黑色轮廓

时间:2013-11-15 15:12:10

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

here之前已经提出了这个问题,但我想提供更多信息。 滚动时,YouTubePlayerView通常会显示黑色轮廓,这可能在暂停和更改旋转后发生。 这似乎发生在我滚动并且它被覆盖时,所以它暂停(以防止控件被隐藏)。暂停不是问题,因为用户没有观看视频而是黑屏。 这种情况发生在运行Android 4.0.3的Galaxy Tab 2上,也在4.1.2上的Xperia T上,运行4.2.2的One X和运行2.2.2的Desire上发生问题。

更多信息: 暂停的视频图像在向下滚动时显示为在屏幕顶部拉伸(在Xperia T上)。当黑色字段看起来达到最小尺寸时,它会开始滚动浏览其他内容。

警告文字 由于未经授权覆盖播放器,YouTube视频播放停止。 YouTubePlayerView未包含在其祖先android.widget.ScrollView@41290ca0中。祖先边缘与YouTubePlayerView边缘之间的距离为:left:20,top:0,right:20,bottom:-11(这些都应为正数)。

这是我的代码:

    <TextView
        android:id="@+id/textView"
        android:gravity="center"
        android:textSize="25sp"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="@string/header" />

   <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="0dp" >

        <LinearLayout
            android:gravity="center_horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" > <!-- In a linear layout so it is possible to set it in the middle -->

            <com.google.android.youtube.player.YouTubePlayerView
                 android:id="@+id/youtubeplayer"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:visibility="gone" >
             </com.google.android.youtube.player.YouTubePlayerView>
        </LinearLayout>
   </ScrollView>

所以我的问题是,有没有办法摆脱或阻止黑色补丁显示?

目前我有一个很大的解决方法,当用户开始滚动时,youtubeplayer将被释放,带有播放按钮的图像将取而代之,当用户按下按钮时,youtubeplayer将重新初始化并继续播放视频。

1 个答案:

答案 0 :(得分:0)

实际上,此问题有解决方法。您需要在ScrollView上放置一个侦听器并捕获Y距离。当Y距离接近YoutubePlayerView的高度时,您需要暂停视频。

scrollView.getViewTreeObserver()
                .addOnScrollChangedListener(() -> {
                    onScroll(scrollView.getScrollY()); 
                    }
                });


private void onScroll(int position)
    { 
            if (position>300 && position <400)
            {
                canPauseOnScroll=false; 
            } 

            if (canPauseOnScroll)
            {
                canPauseOnScroll=false;
                ytHelper.getPlayer().pause();
            } 
    }