Developer--WebView

一、综述
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.AbsoluteLayout

↳ android.webkit.WebView

用于显示网页,用WebKit rendering engine,同时还包括前进和后退的方法。别忘记添加网络允许的permission。

必须得是某个元素的child。

因为webview对JavaScript没有容错能力,如果需要与webpage进行复杂的交互,建议使用Intent,打开浏览器应用。代码:

Uri uri = Uri.parse("http://www.example.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

使用webView的时候,将<WebView>引入布局,当然也可以令整个Activity作为WebView显示,在onCreate()里面显示:

WebView webview = new WebView(this);
setContentView(webview);

如果是希望加载特定的网页:

webview.loadUrl("http://slashdot.org/");

// 如果你想加载特定的字符串
String summary = "<html><body>You scored <b>192</b> points.</body></html>";
webview.loadData(summary, "text/html", null);

需要注意的几个方法:

1、WebChromeClient 影响浏览器UI的时间发生时,比如季度更新或者JS警报,调用

在该函数里面,可以定制以提供你自己的行为比如打开不同的界面或者是实施任何行为

public void setWebChromeClient (WebChromeClient client)  设置chrome的句柄,该handler集成了WebChromeClient的JS dialog等

2、WebViewClient 影响内容的加载时,调用。当然,也可以在这里也可以拦截URL的加载

public void setWebViewClient (WebViewClient client)



3、WebSetting 相关设置,比如授权JS(setJavaScriptEnabled())

4、addJavascriptInterface(Object, String) 把Java Objects注入到Web View中


全屏显示:

设置WebChromeClient,实现onShowCustomView(View, WebChromeClient.CustomViewCallBack)和 onHideCustomView()

Layout尺寸:

推荐设置WebView的高度时,设定为固定值或者MATCH_PARENT而不是WRAP_CONTENT


二、常用方法

1、public void addJavascriptInterface (Object object, String name)

把支持的Java对象引入到WebView里面。对象注入JavaScript上下文的主要框架,使用提供的名字。

注意:

该方法容易有安全风险,因为他允许JavaScript控制主应用。

JS与Java Object的交互是在私有的背景线程,因此需要保持线程的安全

参数:object:引入的object  name:JS中用于显示object的名字

(说明:在实际应用中,该方法用于截获js页面的动作,与之交互)

2、public boolean canGoBack ()

得到这个WebView是否有返回的历史,true的话就是可以

 3、public boolean canGoForward ()

得到这个WebView是否有向前的历史,true的话就是可以

4、public Picture capturePicture ()

用onDraw(Canvas)得到WebView 的bitmap快照,或者用saveWebArchive(String) 保存文件的内容。得到当前的WebView 的图片。

5、public void clearCache (boolean includeDiskFiles)

清除资源的缓存,注意缓存是针对整个应用的,清除的话也是清除所有的WebView。

参数: includeDiskFiles 如果RAM缓存已经清除,就false

6、public void destroy ()

7、public boolean dispatchKeyEvent (KeyEvent event)

8、public void freeMemory ()

通知WebVIew,内存比较低, 可以释放

9、public int getContentHeight ()

得到HTML Content的高度

10、public int getProgress ()

得到当前页面的进度。返回:进度在0-100之间

11、public WebSettings getSettings ()

得到关于WebView的setting 的对象。

12、public String getTitle () 当前页面的title

13、public String getUrl ()

当前页面的URL

14、public void loadData (String data, String mimeType, String encoding)

从data的URL得到数据。但是限制在于,只能用data去匹配??(感觉不太好用)

参数:

data 自定编码的data字符串
mimeType  data的MIME 类型 , e.g. 'text/html'
encoding  data的编码

15、public void loadUrl (String url)

load  URL的资源

16、public void loadUrl (String url, Map<String, String> additionalHttpHeaders)

加载带有给定的HTTP header的URL

17、public void onChildViewAdded (View parent, View child)

在父视图里面加入子视图

18、public boolean onHoverEvent (MotionEvent event)

19、public boolean onKeyDown (int keyCode, KeyEvent event)

20、public boolean onTouchEvent (MotionEvent event)

21、public void postUrl (String url, byte[] postData)  post方式加载的网页

22、public void postWebMessage (WebMessage message, Uri targetOrigin) post信息给主架构

23、public void reload ()

24、public void removeJavascriptInterface (String name)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值