Android Webview总结_html/css_WEB-ITnose
这些都是曾经收集到的一些关于Webview的知识,有些工作中用到了,有些暂时还没有用到,这次统一整理下,希望对自己,对大家有所帮助。另外,欢迎大家补充(当然,有错也要指正呀,不胜感激),如果可以的话,我会 更新到本帖中。
官方文档 更多知识:)
一.权限
二.创建Webview对象
WebView webview = new WebView(this);
三.加载网页的方式
- loadData(String data, String mimeType, String encoding)des:Load the given data into the WebView.as:
String summary = "<html><body>You scored <b>192</b> points.</body></html>"; webview.loadData(summary, "text/html", null);
Salin selepas log masuk - loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)des:Load the given data into the WebView, use the provided URL as the base URL for the content.
- loadUrl(String url)des:Load the given url.as: webView.loadUrl("http://www.jianshu.com/"); //加载网络网页webView.loadUrl("file:///android_asset/html/index.html"); //加载本地assert目录下网页webView.loadUrl("content://com.Android.htmlfileprovider/sdcard/kris.html"); // 加载SD卡html
- loadUrl(String url, Map
extraHeaders)Load the given url with the extra headers. - postUrl(String url, byte[] postData)des: Loads the URL with postData using "POST" method into this WebView.
- 利用Intent调用系统浏览器
Uri uri = Uri.parse("http://www.jianshu.com/"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
Salin selepas log masuk
四.设置Webview
webView.clearHistory();webView.clearCache(true);webView.clearFormData();webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);// 隐藏滚动条webView.requestFocus();webView.requestFocusFromTouch();
Salin selepas log masuk
五.Webview辅助类
1>WebSettings设置WebView的一些属性、状态等,例如允许使用javascript,允许使用缓存,允许使用内置的缩放组件,设置支持IS等。
- 官方文档
- 获取WebSettings对象:WebSettings mWebSettings = webView.getSettings();
- For Example
WebSettings mWebSettings = webView.getSettings();mWebSettings.setJavaScriptEnabled(true);// 支持JSmWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);//支持通过js打开新的窗口mWebSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);//提高渲染等级mWebSettings.setBuiltInZoomControls(false);// 设置支持缩放mWebSettings.setDomStorageEnabled(true);//使用localStorage则必须打开mWebSettings.setBlockNetworkImage(true);// 首先阻塞图片,让图片不显示mWebSettings.setBlockNetworkImage(false);// 页面加载好以后,在放开图片:mWebSettings.setSupportMultipleWindows(false);// 设置同一个界面mWebSettings.setBlockNetworkImage(false);mWebSettings.setCacheMode(1);mWebSettings.setNeedInitialFocus(false);// 禁止webview上面控件获取焦点(黄色边框)
Salin selepas log masuk
主要帮助WebView处理各种通知、请求事件(例如,点击链接时候如何显示界面,页面开始加载,加载完毕之后有何动作等)
- 官方文档
- 使用
webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { //页面开始加载时 super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { //页面加载结束时 super.onPageFinished(view, url); } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); // 这里进行无网络或错误处理,具体可以根据errorCode的值进行判断, } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); /** * 网页跳转: * 1.在当前的webview跳转到新连接 * view.loadUrl(url); * 2.调用系统浏览器跳转到新网页 * Intent i = new Intent(Intent.ACTION_VIEW); * i.setData(Uri.parse(url)); * startActivity(i); */ return true; }});
Salin selepas log masuk
辅助WebView处理Javascript的对话框、网站图标、网站Title、加载进度等
webView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { // 获得网页的加载进度 newProgress为当前加载百分比 super.onProgressChanged(view, newProgress); } @Override public void onReceivedTitle(WebView view, String title) { // 获取网页的title,客户端可以在这里动态修改页面的title // 另外,当加载错误时title为“找不到该网页” super.onReceivedTitle(view, title); }});
Salin selepas log masuk
六.与JS交互addJavascriptInterface
- 前提
mWebView.getSettings().setJavaScriptEnabled(true);
Salin selepas log masuk 使用
mWebView.addJavascriptInterface(new JSInterface(), "jsInterface"); JSInterface对象:public class JSInterface { @JavascriptInterface public void methodA() { } @JavascriptInterface public void methodB(String webMessage) { }}
Salin selepas log masuk注意:1.JavascriptInterface是4.2版本google新增的一个注解,为了避免一个安全隐患,详细信息及4.2以下系统版本适配看这里: Android WebView的Js对象注入漏洞解决方案 ;另外,safe-java-js-webview-bridge这个开源项目完全用onJsPrompt() 替代了addJavaScriptInterface(),有兴趣的可以学习。2.JS调用Java:
window.js_callback.viewPicOnJavascript($('article img').index(this));
Salin selepas log masuk3.客户端调用JS
mWebView.loadUrl("javascript:alert()");
Salin selepas log masuk
七.键盘
- webview是否可以返回到上一页面 webView.canGoBack()
- webview返回到上一页面 webView.goBack();
- webview是否可以前进 webView.canGoForward()
- webview前进 webView.goForward();*
public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event);}
Salin selepas log masuk
八.其他
- WebViewClient好吧,之前确实不知道有这么个东东,今天写这篇贴子的时候才发现的,看名字,应该是在Fragment里对Webview的封装,应该是个好东西。有兴趣的小伙伴们 点进来:WebViewClient
- WebView cookies清理
CookieSyncManager.createInstance(this);CookieSyncManager.getInstance().startSync();CookieManager.getInstance().removeSessionCookie();
Salin selepas log masuk - 屏蔽长按事件
webView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { return true; }});
Salin selepas log masuk - Webiew保留缩放功能但是隐藏缩放控件(这是一招必杀技)
webView.getSettings().setSupportZoom(true);webView.getSettings().setBuiltInZoomControls(true);webView.getSettings().setDisplayZoomControls(false);// setDisplayZoomControls是在Android 3.0中新增的API.,调用此方法前需要对系统版本进行判断
Salin selepas log masuk - 判断Webview是否滑动到顶部或底部
if (webView.getContentHeight() * webView.getScale() == (webView.getHeight() + webView.getScrollY())) { // 处于底端}if(webView.getScrollY() == 0){ //处于顶部}des:getScrollY() //方法返回的是当前可见区域的顶端距整个页面顶端的距离,也就是当前内容滚动的距离.getHeight()或者getBottom() //方法都返回当前WebView这个容器的高度getContentHeight()返回的是整个html的高度,但并不等同于当前整个页面的高度,因为WebView有缩放功能,所以当前整个页面的高度实际上应该是原始html的高度再乘上缩放比例
Salin selepas log masuk
================================================
更多内容请关注 我的专题 转载请注明 出处: http://www.jianshu.com/users/c1b4a5542220/latest_articles
Thank you and have a nice weekend!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Artikel ini membincangkan html & lt; datalist & gt; elemen, yang meningkatkan bentuk dengan menyediakan cadangan autokomplete, meningkatkan pengalaman pengguna dan mengurangkan kesilapan. Kira -kira: 159

Artikel ini membincangkan html & lt; kemajuan & gt; elemen, tujuan, gaya, dan perbezaan dari & lt; meter & gt; elemen. Tumpuan utama adalah menggunakan & lt; kemajuan & gt; untuk menyelesaikan tugas dan & lt; meter & gt; untuk stati

Artikel ini membincangkan html & lt; meter & gt; elemen, digunakan untuk memaparkan nilai skalar atau pecahan dalam julat, dan aplikasi umum dalam pembangunan web. Ia membezakan & lt; meter & gt; dari & lt; kemajuan & gt; dan Ex

Artikel ini membincangkan & lt; iframe & gt; Tujuan TAG dalam membenamkan kandungan luaran ke dalam halaman web, kegunaan umum, risiko keselamatan, dan alternatif seperti tag objek dan API.

Artikel ini membincangkan tag Meta Viewport, penting untuk reka bentuk web responsif pada peranti mudah alih. Ia menerangkan bagaimana penggunaan yang betul memastikan skala kandungan yang optimum dan interaksi pengguna, sementara penyalahgunaan boleh membawa kepada isu reka bentuk dan kebolehaksesan.

Artikel ini membincangkan menggunakan atribut pengesahan bentuk HTML5 seperti had, corak, min, max, dan panjang untuk mengesahkan input pengguna secara langsung dalam penyemak imbas.

Artikel membincangkan amalan terbaik untuk memastikan keserasian silang pelayar HTML5, memberi tumpuan kepada pengesanan ciri, peningkatan progresif, dan kaedah ujian.

Artikel ini menerangkan html5 & lt; time & gt; elemen untuk perwakilan tarikh/masa semantik. Ia menekankan pentingnya atribut DateTime untuk pembacaan mesin (format ISO 8601) bersama teks yang boleh dibaca manusia, meningkatkan aksesibilit
