gpt4 book ai didi

android - 将

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:23 25 4
gpt4 key购买 nike

我有一个带有拆分布局的平板电脑应用程序 - 左侧是列表,右侧是详细信息 Pane 。右侧 Pane 是一个 WebView,它包含一个 <video>。标签。这一切工作正常,除了 WebView 的整个右侧被切断并呈现纯白色。

为什么它以这种方式呈现,我如何在不插入大量 hack 的情况下避免它?

我已将其归结为一个简单的测试项目,我已将其发布 on github .

这是一个屏幕截图:http://d.pr/i/dfEh .

左侧的灰色区域是 ListView 所属的区域。我已将其更改为空 FrameLayout为简单起见。 WebView 右侧的截断部分与 ListView 的宽度相同。还值得注意的是,视频下方的任何内容也被截断了--白色区域延伸了 WebView 的整个高度。

我尝试过的一些事情:

  • 用其他东西替换 ListView
  • 启用和禁用WebSettings : javascript,使用宽视口(viewport),以概览模式加载
  • 设置WebViewClient和一个 WebChromeClient
  • 打开和关闭硬件加速
  • View.setScrollBarStyle 中的各种设置, WebView.setVerticalScrollBarOverlay , 和类似的
  • 调整 <video>的高度/宽度属性和样式
  • 各种视频格式,包括带 h264 和 aac 的 mp4、m3u8 以及 youtube rtsp 流
  • 各种设备,包括所示的 Fire HD、Nexus 7、Galaxy 10.1 和 Xoom
  • Android 版本 3.1、3.2、4.0、4.1

当前的解决方法:

我最终解决了这个问题,方法是使用全屏 WebView,将我的 ListView 覆盖在它上面,并在 html 中的最外层容器元素上设置左边距。这相当棘手,并且在各种密度和分辨率下获取 ListView 的大小很容易出错,所以我真的很想以正确的方式解决这个问题。

fragment :

正如我所提到的,一个(非)工作测试平台发布在 github 上,但这里是重要的部分:

加载到 WebView 中的 Html(这就是全部):

<html>
<head><title>Title</title></head>
<body style="margin:0">
<video x-webkit-airplay="allow" controls="controls" style="width:100%">
<source src="http://clips.vorwaerts-gmbh.de/VfE_html5.mp4"></source>
</video>
</body>
</html>

主布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<fragment android:name="com.concentricsky.android.webviewvideotest.ListFragment"
android:id="@+id/item_list"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />

<!-- The WebView is attached here -->
<FrameLayout android:id="@+id/detail_container"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" />

</LinearLayout>

onCreateView :

    View rootView = inflater.inflate(R.layout.fragment_detail, container, false);
webView = (WebView) rootView.findViewById(R.id.webview);
webView.setWebChromeClient(new WebChromeClient());
webView.loadUrl("file:///android_asset/test.html");
return rootView;

我真的为这个问题绞尽脑汁,令我惊讶的是我找不到任何提及它的地方。任何意见都值得赞赏,无论多么牵强。

最佳答案

问题似乎出在硬件/opengl 层。由于 VideoView 使用硬件层来呈现视频,我相信带有视频的 webView 也会发生同样的情况。

所以如果你正确设置图层,它们不应该相互干扰,所以就像我在评论中说的,你应该将 ListView 设置为无图层或软件,以禁用硬件加速并在 webView 上启用它或 window 。

有关硬件加速的更多信息,请访问 http://developer.android.com/guide/topics/graphics/hardware-accel.html#controlling

关于android - 将 <video> 切成两半的部分屏幕 WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13080578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com