2015-03-13 85 views
0

我有一个困惑,期待对此发表一些评论。我假定WebView创建一个单独的表面进行绘制,并且不使用该活动的默认表面进行绘制。但是,在surfaceflinger转储中,当使用webview时,我看不到创建新表面。webview是否像videoview一样创建一个单独的表面?

当我使用videoview做类似的实验时,我看到一个单独的表面被创建。我也想播放视频,所以假设将创建一个单独的表面,从而根据视频分辨率生成表面分辨率。但是如果它使用应用程序的表面,那么视频的最大分辨率必须是UI分辨率。

在铬代码中,我看到单独表面的代码,但实际上我看不到创建的代码。

有人可以帮我澄清这一点。

谢谢。

回答

2

如果你看看VideoView inheritance graph,你会发现它从SurfaceView继承,而WebViewdoes not,这样的WebView只能达到通过创建一个外部SurfaceView。

虽然如果你search for usages of ExternalVideoSurface in WebView part of Chromium code,你会注意到,只有当“视频洞”被启用,它只打算用于解码加密视频,其中WebView需要做“打孔”时才被启用。有一个System API-level setting in WebView,使这种行为,但它有它自己的限制,因此不建议一般使用。

+0

你好米哈伊尔..谢谢你的回答。我认为你是正确的,因为我已经看到了有关ExternalVideoSurface的类似事情。尽管如此,我还是会等待更多时间用于其他评论,否则会接受你的回答。无论如何,我现在肯定会+1 – Sushil 2015-03-13 12:15:33

相关问题