YouTubePlayerView 滚动时出现黑色轮廓

Posted

技术标签:

【中文标题】YouTubePlayerView 滚动时出现黑色轮廓【英文标题】:YouTubePlayerView black outline when scrolling 【发布时间】:2013-11-29 00:45:50 【问题描述】:

这个问题已经在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_
        android:layout_
        android:text="@string/header" />

   <ScrollView
        android:id="@+id/scrollView"
        android:layout_
        android:layout_weight="1"
        android:layout_ >

        <LinearLayout
            android:gravity="center_horizontal"
            android:layout_
            android:layout_ > <!-- 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_
                 android:layout_
                 android:visibility="gone" >
             </com.google.android.youtube.player.YouTubePlayerView>
        </LinearLayout>
   </ScrollView>

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

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

【问题讨论】:

[查看我在这篇文章中的回复也许对你有帮助][1] [1]:***.com/questions/16067783/… 感谢您的宝贵时间,我知道不允许查看它,但客户想要它。然而,我希望 youtube 能够在所有平台上通过暂停或释放而不是给出黑色轮廓来正确处理这个问题。 【参考方案1】:

其实这个问题有一个解决方法。您需要在 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();
             
    

【讨论】:

以上是关于YouTubePlayerView 滚动时出现黑色轮廓的主要内容,如果未能解决你的问题,请参考以下文章

viewController 出现时出现黑色

从 C++ 中的屏幕选择创建位图时出现黑色图像

增加输入框的宽度?删除单击按钮或输入框时出现的黑色轮廓?

当我的 googlemaps 视图活动重新获得焦点时出现问题(窗口下方有黑色区域的地图)

滚动 AQGridView 项目时出现延迟

禁用 UITableview 滚动时出现问题