在 Android 上渲染 WebView 时屏幕闪烁一次

2024-01-16

I use react-native-webview在我的 React Native 应用程序中渲染 WebView。 在 iOS 上一切正常,但在 Android 上,当渲染 WebView 时,我的屏幕会闪烁(黑色,然后白色,然后显示网页)。

根据这个答案 https://stackoverflow.com/a/14346323/6111343,我尝试添加android:hardwareAccelerated="false" in the <application>我的标签AndroidManifest.xml,但这并不能解决我的问题。 (此外,它隐藏了使用创建的所有阴影效果elevation样式属性)

<DelayedComponent key={key} style={{ height: 200, ...style }}>
  <WebView
    style={{ alignSelf: "stretch" }}
    source={{ uri: /* a youtube url */ }}
    renderLoading={() => <Loading />}
    startInLoadingState={true}
    scrollEnabled={false}
  />
</DelayedComponent>

<DelayedComponent>只是一个渲染的测试组件<WebView>一秒后(使用基本的 setTimeout)。

export class DelayedComponent extends React.PureComponent<
  { delay?: number; renderLoading?: any } & ViewProps,
  { show: boolean }
> {
  constructor(props) {
    super(props);
    this.state = { show: false };
  }

  public render() {
    console.log("RENDER DELAYED", this.state);
    const loadingComp = this.props.renderLoading || (
      <Text>Just wait a second...</Text>
    );
    const { delay, renderLoading, ...forwardProps } = this.props;
    return (
      <View {...forwardProps}>
        {this.state.show ? this.props.children : loadingComp}
      </View>
    );
  }

  public async componentDidMount() {
    const delay = this.props.delay || 1000;
    await (() => new Promise(resolve => setTimeout(resolve, delay)))();
    this.setState({ show: true });
  }
}

屏幕闪烁一秒后<DelayedComponent>呈现,当<WebView>被展示。

以下是显示发生情况的视频链接:https://drive.google.com/open?id=1dX7ofANFI9oR2DFCtCRgI3_0DcsOD12B https://drive.google.com/open?id=1dX7ofANFI9oR2DFCtCRgI3_0DcsOD12B

我希望渲染 WebView 时屏幕不会闪烁,就像 iOS 设备上发生的那样。

感谢您的帮助 !


只需将 WebView 样式的不透明度设置为 0.99 即可。

<WebView style={{ opacity: 0.99 }} />

大概与以下因素有关:Android 设备上的渲染 webview 与同一父级的先前兄弟姐妹重叠 https://stackoverflow.com/questions/52872045/rendering-webview-on-android-device-overlaps-previous-siblings-from-same-parent?answertab=votes#tab-top

编辑:将 WebView 组件包装在 View 中overflow: 'hidden': <View style={{flex: 1, overflow: 'hidden'}}><WebView ... /></View>也有效,但有时可能会因某种原因导致应用程序崩溃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android 上渲染 WebView 时屏幕闪烁一次 的相关文章

  • 我可以将标头传递给图像源吗?

    我的图像源是安全的 所以理想情况下我想执行以下操作
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • 在gradle插件中获取应用程序变体的包名称

    我正在构建一个 gradle 插件 为每个应用程序变体添加一个新任务 此新任务需要应用程序变体的包名称 这是我当前的代码 它停止使用最新版本的 android gradle 插件 private String getPackageName
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • React Native - 无法从“index.js”解析模块“@babel/runtime/helpers/interopRequireDefault”

    正如中提到的无法解析模块 babel runtime helpers interopRequireDefault https stackoverflow com questions 52486219 unable to resolve mo
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分

随机推荐

  • 具有大量页面的类别(巨大的偏移量)(stackoverflow 是如何工作的?)

    我认为只要知道 stackoverflow 的工作原理就可以解决我的问题 例如 此页面在几毫秒内加载 https stackoverflow com questions page 61440 sort newest 我能想到的对该页面的唯一
  • 密码字段在 Django 管理站点中可见且未加密

    因此 要使用电子邮件作为用户名 我覆盖了内置User像这样的模型 灵感来自Django 源代码 https github com django django tree main django contrib auth 模型 py class
  • 如何放大 Material UI 图标按钮中的 SVG 图标?

    有没有人使用过构建网页react js https facebook github io react 和材质用户界面 https www material ui com 图书馆 我应该如何调整图标大小 它是一个 SVG 图标 我刚刚构建了一
  • VBscript,在FTP中创建目录

    我想在FTP中创建一个目录 目录的名称必须是我的计算机名称 这是我的代码 Dim FoldertoCreate filesys newfolder Ob Set Ob Wscript CreateObject Wscript Network
  • 属性“spring.cloud.config.server.git.privateKey”不是有效的私钥

    有点卡在上面了 虽然我看到有人就同一主题提出问题 并且已经尝试过 但仍然没有办法 堆栈我使用 gt mac mojave Intellij jdk 8 在mac本身上使用puttygen生成密钥 看起来像这样 这仅适用于我本地的spring
  • 遍历注册表子文件夹

    我想获取注册表路径的所有值 包括其子文件夹的值 现在我通过以下方式读取单个文件夹的值 const HKEY LOCAL MACHINE H80000002 strComputer Set oReg GetObject winmgmts im
  • 简单的 PHP/HTML 上传页面 - 没有文件保存

    我是 HTML PHP 新手 我正在尝试创建一个简单的 php 文件上传页面 我将此作为我的 HTML
  • 如何获取我的对象的父对象的实例

    Java 有没有办法从该对象获取该对象的父类的实例 ex public class Foo extends Bar public Bar getBar code to return an instance of Bar whose memb
  • 我是否应该对对象中的 (NSString *) attr 使用 @property(nonatomic,copy) 或 @property(nonatomic,strong) ?

    interface PaneBean NSObject property nonatomic copy NSString name property nonatomic copy NSString type property nonatom
  • 从 jquery 获取偏移值

    我如何找到包含在表格中的图像的偏移值 该表由大量图像组成 我想在将鼠标悬停在图像中时获取所有图像的偏移量 左 右 上 下 我在 jquery 中需要这个 Thanks 普拉文 J var elem your element var offs
  • 使用 CSS 逐渐改变图像(擦除过渡)

    我有一个奇怪的问题 这很奇怪 因为我很难解释我的意思 我意识到 我可能会得到一些负面反馈 但没有其他地方可以询问 我正在寻找一种 CSS 技术 或者如果不可能的话 也可以使用 JavaScript 来在悬停时逐渐改变图像 我不希望它立即淡出
  • 创建 R 中相同数字的长度为 N 的向量

    我需要一个包含 100 个 4 5s 的数值向量 有没有一种方法可以在不输入内容的情况下创建这个向量c 4 5 4 5 100次 谢谢 rep 4 5 100 函数rep可以解决问题
  • 让显示:无元素slideRight();

    我正在尝试在 CSS 中制作一个菜单 其中只有图标作为按钮可见 但是当您将鼠标悬停在它们上方时 必须显示图标旁边的文本 问题是我想用类似 SlideDown 的效果来动画显示文本的效果 然后才到右侧 HTML 其中包括图标的 fontawe
  • Grails 或 Play 如何检测更改和热重载类?

    我很好奇是否有人知道 Grails 或 Play 等框架如何检测代码中的更改并自动触发重新编译而无需重新启动应用程序服务器的详细信息 Groovy 的编译器或其动态特性是否有某些特定的东西使得这种情况很容易发生 作为背景 我在构建过程中有一
  • 尝试计算 MDX 中的四分位数

    我的数据如下所示 ID PersonID CompanyID DateID Throughput AmountType 33F467AC F35B 4F24 A05B FC35CF005981 7 53 200802 3 0 04EE0FF
  • 如何创建序列号生成器? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何对序列号生成器进行编程 为某些现
  • jQuery 延迟直到背景图像加载,然后淡入?

    我一直在做大量的研究 并且有大量的插件和教程涵盖了大背景图像的使用 不幸的是 它们都有一个共同点 它们使用绝对定位的图像来充当 假 背景图像 通常这对我来说效果很好 而且我之前已经这样做过 但是 这个项目有一个重复的背景图像 所以我有必要使
  • Django 管理员覆盖显示的字段值

    我有以下型号 class Model models Model creator models ForeignKey User related name com creator on delete models SET NULL blank
  • d3.js 强制定向图搜索

    我正在尝试在 d3 力定向图示例上实现搜索功能 当我在文本字段中输入搜索查询时 相关项目将显示 不相关项目将淡出 我已经实现了 searchUpdate 和 count 方法 如下所示jsfiddle http jsfiddle net H
  • 在 Android 上渲染 WebView 时屏幕闪烁一次

    I use react native webview在我的 React Native 应用程序中渲染 WebView 在 iOS 上一切正常 但在 Android 上 当渲染 WebView 时 我的屏幕会闪烁 黑色 然后白色 然后显示网页