android webview 显示灰度网页

这篇具有很好参考价值的文章主要介绍了android webview 显示灰度网页。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要在WebView中显示网页灰度显示,您可以通过以下步骤操作:
使用的原理两种方式,一种使用画笔,一种是js css注入。都能够实现黑白色灰度网页。

在您的布局文件中添加WebView组件:

<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

在您的Activity或Fragment中,初始化WebView并启用硬件加速:

WebView webView = findViewById(R.id.webview);
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);

创建applyGrayscaleFilter()方法,该方法将会应用灰度滤镜到WebView的内容:


@SuppressWarnings({"deprecation", "AccessStaticViaInstance"})
    private void applyGrayscaleFilter(WebView webView) {
        // 创建WebSettings实例
        WebSettings webSettings = webView.getSettings();

        // 启用插件
        webSettings.setPluginState(WebSettings.PluginState.ON);

        // 根据系统版本选择不同的滤镜方法
        ColorMatrix colorMatrix = new ColorMatrix();
        colorMatrix.setSaturation(0);// 0为黑白色
        ColorMatrixColorFilter filter = new ColorMatrixColorFilter(colorMatrix);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            // Android 10及以上版本
            webView.setWebContentsDebuggingEnabled(true);
            webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
            webView.setRendererPriorityPolicy(RENDERER_PRIORITY_BOUND, true);
            // 两种方法都可以
            //nativeHandleGrey(view, filter);
            webView.loadUrl("javascript:" + jsHandleGrey());
        } else {
            // 低于Android 10版本
            webView.setDrawingCacheEnabled(true);
            webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
            webView.setBackgroundColor(Color.TRANSPARENT);
            Paint paint = new Paint();
            paint.setColorFilter(filter);
            webView.setLayerPaint(paint);
        }
    }

    private String jsHandleGrey() {
        return "var style_special = document.createElement('style');\n" +
                "var css_special = `* {\n" +
                "            filter: grayscale(100%) !important;\n" +
                "            -webkit-filter: grayscale(100%) !important;\n" +
                "        }`;\n" +
                "style_special.appendChild(document.createTextNode(css_special));\n" +
                "document.head.appendChild(style_special);";
    }

    private void nativeHandleGrey(WebView view, ColorMatrixColorFilter filter) {
        Bitmap webViewBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(webViewBitmap);
        view.draw(canvas);

        Paint paint = new Paint();
        paint.setColorFilter(filter);

        canvas.drawBitmap(webViewBitmap, 0, 0, paint);
        if (webViewBitmap != null)
            webViewBitmap.recycle();
    }

最后,在WebView加载网页之前,调用applyGrayscaleFilter()方法以应用灰度滤镜效果:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        applyGrayscaleFilter();
    }
});

webView.loadUrl("https://www.example.com");

这样就可以在WebView中显示灰度网页了。根据系统版本的不同,使用了不同的滤镜方法来实现灰度效果。请注意,这种方法可能会影响WebView的性能和渲染速度,因此请确保在使用之前进行足够的测试。文章来源地址https://www.toymoban.com/news/detail-646104.html

到了这里,关于android webview 显示灰度网页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序使用webview打开pdf文档及显示网页内容

    一、微信小程序根据接口返回的pdf链接,在小程序内部浏览pdf内容 需要用到微信小程序的两个api 下载资源到本地 wx.downloadFile wx.openDocument 前一个api下载资源到本地,后一个api打开pdf文档 二、根据网页链接,把网页内容在微信小程序内部显示 需要用到微信小程序的一个标签

    2024年02月09日
    浏览(58)
  • Android Studio 加载一个 WebView 来访问网页

    为了实现在 Android Studio 加载一个 WebView 来访问网页,您可以按照以下步骤进行操作: 在布局文件中添加 WebView。在 res/layout 目录下创建一个新的 layout xml 文件(例如 webview_layout.xml)。在该文件中添加一个 WebView: 在 Java 代码中添加 WebView 的逻辑。在 Activity 类中创建 WebView 对

    2024年02月02日
    浏览(45)
  • Android 使用webView打开网页可以实现自动播放音频

    使用webview 自动播放音视频,场景如,流媒体自动部分,音视频通话等。会出现如下问题:   解决方案如下: 配置webview 如下,这样可以自动播放音频。

    2024年02月12日
    浏览(64)
  • Android WebView简单应用:构建内嵌网页浏览功能

    在现代移动应用开发中,内嵌网页浏览功能是许多应用程序的常见需求。Android平台提供了WebView组件,它允许开发者将网页内容嵌入到应用中,并提供了丰富的功能和定制选项。本文将介绍如何在Android应用中使用WebView组件,帮助您快速构建简单而强大的内嵌网页浏览功能。

    2024年02月13日
    浏览(37)
  • Android WebView 报错 ( 网页无法打开 位于 http://... 的网页无法加载, 因为 net::ERR_CLEARTEXT_NOT_PERMITTED )

    在 Android 9.0 及以上的系统版本中,系统默认情况下禁止应用程序使用不安全的明文流量进行网络连接,以提高用户的安全性。 这意味着,如果应用程序尝试连接到一个不安全的 HTTP 网站,将收到 net::ERR_CLEARTEXT_NOT_PERMITTED 错误 ; 也就是说应用中的 WebView 尝试显示 HTTP 站点时就

    2024年02月05日
    浏览(45)
  • 【错误记录】Android WebView 报错 ( 网页无法打开 位于 http://... 的网页无法加载, 因为 net::ERR_CLEARTEXT_NOT_PERMITTED )

    报错信息 : 网页无法打开 位于 http://… 的网页无法加载, 因为 net::ERR_CLEARTEXT_NOT_PERMITTED ; 在 Android 9.0 及以上的系统版本中 , 系统默认情况下禁止应用程序使用不安全的明文流量进行网络连接, 以提高用户的安全性。 这意味着,如果应用程序尝试连接到一个不安全的 HTTP 网

    2024年02月11日
    浏览(58)
  • Android项目在 app 中通过 WebView 访问 url显示空白,使用浏览器可以打开,Android WebView加载出现空白页面问题解决

    服务器证书校验主要针对 WebView 的安全问题。 在 app 中需要通过 WebView 访问 url,因为服务器采用的自签名证书,而不是 ca 认证,使用 WebView 加载 url 的时候会显示为空白,出现无法加载网页的情况。 使用 ca 认证的证书,在 WebView 则可以直接显示出来,不需要特殊处理。 以往

    2024年02月04日
    浏览(54)
  • Android WebView加载失败,显示net::ERR_CLEARTEXT_NOT_PERMITTED

    在Android应用程序中使用WebView加载网页时,有时可能会遇到net::ERR_CLEARTEXT_NOT_PERMITTED错误。该错误提示明文传输不允许,通常发生在应用程序尝试加载不安全(未加密)的HTTP链接时。本文将介绍如何解决这个问题,并提供相关的源代码示例。 Android 9(API级别28)及更高版本默

    2024年01月17日
    浏览(64)
  • flutter android Webview 打开网页错误ERR_CLEARTEXT_NOT_PERMITTED 、 net:ERR_CACHE_MISS

    前言:当你在Flutter应用中,使用WebView尝试打开的网页时,android环境可能会遇一些问题 原因:Android 9及更高版本,默认情况下,禁止应用程序通过非安全的明文HTTP连接进行网络通信。为了解决这个问题,你可以采取以下三种方法之一: - 将你的网页迁移到使用HTTPS连接。这是

    2024年02月14日
    浏览(42)
  • android webview 打开腾讯文档不跳转到申请权限界面显示ERR_UNKNOWN_URL_SCHEME

    webview 只识别https和http开头的地址 webview调用setWebViewClient方法,重写shouldOverrideUrlLoading方法,返回return super.shouldOverrideUrlLoading(view, url);就可以跳转到申请权限界面了,要登录QQ去申请权限的时候报错,因为这里会返回一个带intent://的地址,只能跳转到外部。要设置 以下是具体

    2024年02月06日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包