webview


vscode插件可以分为很多种类型,比如webview, command, tree view等。每个类型的插件都涉及一些vscode API,webview插件主要涉及 window.createWebviewPanelwindow.registerWebviewPanelSerializer这两个vscode API。

开发环境搭建

一般使用vscode提供的脚手架进行vscode插件开发。使用npm安装yogenerator-code,通过它们生成一个模板工程代码,以该工程为基础进行vscode插件开发。

npm install -g yo generator-code # 安装相关工具
yo code # 按照步骤生成脚手架项目

参考:vscode官方文档

插件的相关概念

需要掌握vscode插件开发中的基本概念以及vscode API的基本使用。vscode插件有3个核心概念:

  1. 激活事件,这些事件触发了就意味着你的扩展被启动了
  2. Contribution Points,它写在package.json中,代表插件贡献的功能
  3. VS Code API

开发webview插件

使用window.createWebviewPanel这个API创建一个Webview Panels。它可以代表一个webview,通过加载html文件来显示内容,通过设置html属性来更新其内容。Webview panels的生命周期中有一些事件,例如事件onDidDispose,可以使用onDidDispose这个钩子函数,在该事件触发时做一些事情。打开vscode的开发者工具可以调试webview,查看输出需要在"console"面板选择当前的frame。一个vscode插件控制一个webview,两者之间可以相互发送消息。使用SerializationsetStategetState 函数实现webview的持久化,其中Serialization是基于setStategetState 的。

相关链接:

  1. webview插件官方文档
  2. webview插件demo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Android应用程序中,WebView是一个常用的控件,用于在应用程序中显示网页。在混淆代码时,需要注意WebView的混淆问题。以下是一些混淆WebView时需要注意的事项: 1.在proguard-rules.pro文件中添加以下代码,以避免WebView的混淆: ```proguard -keepclassmembers class fqcn.of.javascript.interface.for.webview { public *; } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap); public boolean *(android.webkit.WebView, java.lang.String); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest); } -keepclassmembers class * extends android.webkit.WebViewClient { public android.webkit.WebResourceResponse *(android.webkit.WebView, java.lang.String, java.lang.String); } -keepclassmembers class * extends android.webkit.WebViewClient { public android.webkit.WebResourceResponse *(android.webkit.WebView, android.webkit.WebResourceRequest); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebBackForwardList); } -keepclassmembers class * extends android.webkit.WebViewClient { public boolean *(android.webkit.WebView, android.view.KeyEvent); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.net.http.SslError); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.ClientCertRequest); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.HttpAuthHandler, java.lang.String, java.lang.String); } -keepclassmembers class * extends android.webkit.WebViewClient { public boolean *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.os.Bundle); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceError, android.webkit.WebResourceResponse); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse, android.os.Bundle); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse, android.webkit.WebResourceError); } -keepclassmembers class * extends android.webkit.WebViewClient { public void *(android.webkit.WebView, android.webkit.WebResourceRequest, android.webkit.WebResourceResponse, android.webkit.WebResourceError, android.os.Bundle); } ``` 2.在WebViewClient实例中,需要保留onPageFinished()方法中的代码,以确保WebView正确加载图片。具体代码如下: ```java @Override public void onPageFinished(WebView view, String url) { if(!webView.getSettings().getLoadsImagesAutomatically()) { webView.getSettings().setLoadsImagesAutomatically(true); } } ``` 3.在WebView初始化时,需要设置加载图片的选项。具体代码如下: ```java public void init() { if(Build.VERSION.SDK_INT >= 19) { webView.getSettings().setLoadsImagesAutomatically(true); } else { webView.getSettings().setLoadsImagesAutomatically(false); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值