WebView的使用详情
来源:互联网 发布:网络用语pc是什么意思 编辑:程序博客网 时间:2024/05/04 08:10
WebView使用详解
***关于WebView的介绍
官方文档:
* <p>A View that displays web pages. This class is the basis upon which you* can roll your own web browser or simply display some online content within your Activity.* It uses the WebKit rendering engine to display* web pages and includes methods to navigate forward and backward* through a history, zoom in and out, perform text searches and more.</p>* <p>Note that, in order for your Activity to access the Internet and load web pages* in a WebView, you must add the {@code INTERNET} permissions to your* Android Manifest file:</p>* <pre><uses-permission android:name="android.permission.INTERNET" /></pre>
使用特点
1. 用来显示Web页面
2. 通过本地方法来向前 向后 浏览历史 放大 缩小 设置字体等功能
3. 需要添加网络权限
***关于WebView的用法
1. WebView提供了一个像浏览器一样的组件,默认情况下不支持javascript并且Web所有的错误信息都忽略了,如果说你是只是单单的显示一些html的内容使用默认情况下还是挺不错的,当然你也可以通过parse网页地址,然后通过意图打开startActivity
2. WebView的加载网页
a) loadData(String data, String mimeType,String encoding)传入得参数 data 是你需要解析的html内容 mine text/html 说明内容(注意 时候加载出来的内容出现了乱码的情况就在后面添加charset=‘utf-8’)encoding 是编码一般是utf-8
b) public void loadUrl(String url) 这里传入得是url 注意格式(http://地址)
3. 自定义WevView的一些功能
a) WebChromeClient它主要是UI方面的 比如进度条javascript alerts
b) WevViewClient当发生渲染内容 错误 的时候就会被调用 你也可以使用shouldOverrideUrlLoading拦截URL
c) WebSetting比如是否允许javascript 映射java对象到页面JavaScript,然后通过网页进行一些读取操作
4. 使用例子
a) 进度条和错误信息的显示
getWindow().requestFeature(Window.FEATURE_PROGRESS);
*webview.getSettings().setJavaScriptEnabled(true);
*
* final Activityactivity = this;
*webview.setWebChromeClient(new WebChromeClient() {
* public void onProgressChanged(WebView view,int progress) {
* // Activities and WebViews measureprogress with different scales.
* // The progress meter will automaticallydisappear when we reach 100%
* activity.setProgress(progress * 1000);
* }
* });
*webview.setWebViewClient(new WebViewClient() {
* public void onReceivedError(WebView view,int errorCode, String description, String failingUrl) {
* Toast.makeText(activity, "Oh no!" + description, Toast.LENGTH_SHORT).show();
* }
* });
*
*webview.loadUrl("http://www.baidu.com/");
这里我们之前也说过了 WevVIewClient是用来处理网页操作的 而WevChromeClient是用来做UI方面的处理
b).HTML5的支持
1.首先支持HTML5 需要打开硬件加速android:hardwareAccelerated="true"
2.支持全屏幕 需要实现WevChromeClient的两个方法 onShowCustomView和onHideCustomVIew(这两个是必须的)也可以通过getVideoLoadingProgressView 自定义显示
c).HTML地理位置的支持
仅仅支持Android N或者更晚一些 比如https方面的 其他的版本自定隐藏的坐标 onGeolocationPermissionsShowPrompt
d).关于WebView的大小推荐使用一个固定值或者MATCH_PARENT,如果WebView没有父容器应该使用WRAP_CONTENT布局高度比如HTML已经设置了布局的高度
4.关于WevView和js交互代码
WebSettings settings = web.getSettings();
//设置允许javascript
settings.setJavaScriptEnabled(true);
//设置自动打开窗口 默认为false
settings.setJavaScriptCanOpenWindowsAutomatically(true);
//这里注射对象到js 第二个参数是js的名字
web.addJavascriptInterface(new MyClass(), "dojs"); //加载网页地址
b.loadUrl("http://item.btime.com/mil/35m5i48l7nj9h4ocn4aajm7jm4u?from=haoz1t1p2"); web.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); show(); } });}private void show()
//这里调用格式javascript:window.js名字.方法 的格式
adUrl("javascript:window.dojs.show(document.getElementsByTagName('title')[0].innerHTML)");}private class MyClass {
//4.2以后 通过注解去找到方法 @JavascriptInterface public void show(String s) { getString(s); }}private void getString(final String s) { Toast.makeText(this, s, Toast.LENGTH_SHORT).show(); Log.i("getstring", "getString: " + s);}
- WebView的使用详情
- 简单新闻客户端(4)---文章详情显示 webview的使用
- 安卓webview的详细使用详情,webview和js交互
- MongoDB的使用详情
- Service的详情使用
- lucene 的使用详情
- RecyclerView的使用详情
- shiro的使用详情
- webview自适应图文详情
- WebView详情界面的跳转及两种传值方式
- 知乎日报详情页的实现(集成webView)
- iOS UISlider的使用详情
- ImageLoader的简单使用详情
- iOS UIDatePicker的使用详情
- WebView控件加载详情网页
- webview高度自适应图文详情
- Java 中Log4j的使用详情
- Android中TextView的使用详情综述
- sprintf函数
- 倍增法求LCA模版
- 327_Count of Range Sum
- c++中对虚函数的理解
- iOS 点击事件传递及响应
- WebView的使用详情
- Springmmvc 返回modleAndView 视图没有按设置的页面跳转
- 关于C++内联函数
- sprintf作用2
- C++ const关键字
- Spring中jdbcTemplate的用法实例(一)
- 相关系数和协方差
- bzoj 1787: [Ahoi2008]Meet 紧急集合(lca)
- Java知识点整理:第七章:static关键字、final关键字、抽象类 、接口、Object类