展会信息港展会大全

WebView的使用方法总结
来源:互联网   发布日期:2015-10-02 21:31:26   浏览:1322次  

导读:本文主要讲解WebView的一些常用使用方法代码如下:砀洀氀蜀件:嬀栀琀洀氀崀 <LinearLayout xmlns:android="http://schemas.a...

本文主要讲解WebView的一些常用使用方法

代码如下:

xml文件:

[html]

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<WebView

android:id="@+id/webView1"

android:layout_width="match_parent"

android:layout_height="0dip"

android:layout_weight="1" />

<ProgressBar

android:id="@+id/progressBar1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal" />

</LinearLayout>

1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。

2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。

webview.getSettings().setJavaScriptEnabled(true);

3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。

[java]

webView.setWebViewClient(new WebViewClient() {

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

});

4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。

[java]

public boolean onKeyDown(int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {

webView.goBack();

return true;

}

return super.onKeyDown(keyCode, event);

}

5.android中webview支持javascript自定义对象

a.设置webview支持javascript.webSettings.setJavaScriptEnabled(true);

b.绑定android对象到javascript对象. addJavascriptInterface(Object obj,String interfaceName);

c.页面中调用javascript对象. javascript:window.demo.方法名称();

在w3c标准中js有 window,history,document等标准对象,同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以 为所欲为了。

[java]

public class WebViewDemo extends Activity {

private WebView mWebView;

private Handler mHandler = new Handler();

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.webviewdemo);

mWebView = (WebView) findViewById(R.id.webview);

WebSettings webSettings = mWebView.getSettings();

webSettings.setJavaScriptEnabled(true);

mWebView.addJavascriptInterface(new Object() {

public void clickOnAndroid() {

mHandler.post(new Runnable() {

public void run() {

mWebView.loadUrl("javascript:wave()");

}

});

}

}, "demo");

mWebView.loadUrl("file:///android_asset/demo.html");

}

}

6.WebView控制进度

[java]

webView.setWebChromeClient(new WebChromeClient() {

public void onProgressChanged(WebView view, int progress) {

setTitle("页面加载中,请稍候..." + progress + "%");

setProgress(progress * 100);

if (progress == 100) {

setTitle(R.string.app_name);

progressBar.setVisibility(4);

}

}

});

最后把MainActivity的代码贴上

[java]

package com.example.webviewdemo;

import android.app.Activity;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.Menu;

import android.webkit.WebChromeClient;

import android.webkit.WebView;

import android.webkit.WebViewClient;

import android.widget.ProgressBar;

public class MainActivity extends Activity {

WebView webView;

ProgressBar progressBar;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

webView = (WebView) findViewById(R.id.webView1);

progressBar = (ProgressBar) findViewById(R.id.progressBar1);

webView.getSettings().setJavaScriptEnabled(true);

webView.loadUrl("https://m.empireblue.com/mobile/providerfinder/home");

webView.setWebViewClient(new WebViewClient() {

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

});

webView.setWebChromeClient(new WebChromeClient() {

public void onProgressChanged(WebView view, int progress) {

setTitle("页面加载中,请稍候..." + progress + "%");

setProgress(progress * 100);

if (progress == 100) {

setTitle(R.string.app_name);

progressBar.setVisibility(4);

}

}

});

}

public boolean onKeyDown(int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {

webView.goBack();

return true;

}

return super.onKeyDown(keyCode, event);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港