【问题标题】:Android animating a WebView with many webView.LoadData callsAndroid 使用许多 webView.LoadData 调用为 WebView 设置动画
【发布时间】:2019-10-21 11:13:50
【问题描述】:

在编写跨平台软件时,我决定在 HTML 中编写一次视图,以便它们在网站、iOS 和安卓应用程序上是相同的。我正在尝试使用 WebView 在 Android 上显示它们。

视图是动画的,因此我每秒至少生成 10 次新 HTML 并更新它们:

webView.LoadData(htmlString, "text/html", "UTF-8");
webView.PostInvaldiate();

但是,Web 视图似乎每 2 秒才更新一次,而且是最快。 我是否完全重载了 UI 线程?我假设 WebViews 从未为此设计。 是否可以在 Android 中显示这样的动画视图(使用 HTML),还是我需要减少损失并返回并使用 android 画布或其他东西重写整个内容?

还请 cmets 说明这个设计决定多么愚蠢!

【问题讨论】:

  • webView 无法做到这一点,即使是硬件加速也太慢了。
  • @Pawel 我认为你是对的 - 写下这个作为答案,我会接受 - 它回答了我的问题。
  • 为什么不在 HTML 文件中制作动画并加载 HTML 一次
  • @LeoZhu-MSFT 不幸的是,动画是根据 webview 无法知道的其他因素实时决定的

标签: android webview xamarin.android android-webview


【解决方案1】:

试试这个:

WebSettings webSettings = webView.getSettings();
        webSettings.setAllowContentAccess(true);
        webSettings.setAppCacheEnabled(true);
        webSettings.setDatabaseEnabled(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setUseWideViewPort(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setDatabaseEnabled(true);
        webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
        webSettings.setAllowContentAccess(true);
        webSettings.setAllowFileAccessFromFileURLs(true);
        webSettings.setJavaScriptEnabled(true);

或者您可以使用 https://github.com/crosswalk-project 。它具有更好的图形功能。您可以通过npm 或(第二个首选)使用gradle 依赖项并使用CrossWalkView 作为您的简单WebView 生成项目。

还可以尝试另一个扩展的 webview 库:https://android-arsenal.com/details/1/4873

【讨论】:

  • 立即尝试
  • 我正在研究 Crosswalk 项目,但在 Xamarin 上,我需要一个适用于不同 Android 架构的新插件 - ARM 和 x86
  • 我不能 - 我使用的是 Xamarin android 而不是原生 Android
猜你喜欢
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多