初涉WebView编程
来源:互联网 发布:javiewer差不多的软件 编辑:程序博客网 时间:2024/05/29 14:14
1.什么是WebView
WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页.WebView编程也叫浏览器编程,而浏览器编程涉及到html、js和css等等。
今天学习一下如何使用WebView!!!
2.怎么使用WebView
1).WebView的实例化有2种方法:
1.在Activity中实例化WebView组件
WebView webView = new WebView(this);
Activity.setContentView(webView );
2.在布局文件中声明WebView ,在Activity中实例化
2.)我们直接在WebView 上点击链接的话,会弹出Android内置的browser浏览器,而不是在我们WebView 上打开新窗口!切记切记!所以需要调用setWebViewClient(),传入一个WebViewClient对象,需要重写shouldOverrideUrlLoading()方法。
3).为WebView配置url:webView.loadUrl("www.baidu.com");
4).另外在WebView连接打开多个网页时,按回退键的话,不像普通的浏览器broswer是退出app,所以需要重写Activity的OnKeyDown()方法。
5).在AndroidManifest.xml文件中添加网络权限:
<uses-permission android:name="android.permission.INTERNET"/> //联网
详细代码
package com.mkk.webviewdemo;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.DownloadListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity implements OnClickListener {
WebView wv;
Button back;
Button refresh;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.wv);
back = (Button) findViewById(R.id.bt_back);
refresh = (Button) findViewById(R.id.bt_refresh);
tv = (TextView) findViewById(R.id.tv);
wv.loadUrl("http://111.1.62.72/files/4105000000342E31/dl.ops.baidu.com/appsearch_AndroidPhone_1426l.apk");
wv.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
tv.setText(title);
super.onReceivedTitle(view, title);
}
});
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
view.loadUrl("file:///android_asset/error.html");
}
});
wv.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
if (url.endsWith(".apk")) {
Uri uri = Uri.parse(url);
Intent i = new Intent(Intent.ACTION_VIEW,uri);
startActivity(i);
}
}
});
back.setOnClickListener(this);
refresh.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_back:
finish();
break;
case R.id.bt_refresh:
wv.reload();
break;
default:
break;
}
}
}
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.DownloadListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity implements OnClickListener {
WebView wv;
Button back;
Button refresh;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.wv);
back = (Button) findViewById(R.id.bt_back);
refresh = (Button) findViewById(R.id.bt_refresh);
tv = (TextView) findViewById(R.id.tv);
wv.loadUrl("http://111.1.62.72/files/4105000000342E31/dl.ops.baidu.com/appsearch_AndroidPhone_1426l.apk");
wv.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
tv.setText(title);
super.onReceivedTitle(view, title);
}
});
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
view.loadUrl("file:///android_asset/error.html");
}
});
wv.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
if (url.endsWith(".apk")) {
Uri uri = Uri.parse(url);
Intent i = new Intent(Intent.ACTION_VIEW,uri);
startActivity(i);
}
}
});
back.setOnClickListener(this);
refresh.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_back:
finish();
break;
case R.id.bt_refresh:
wv.reload();
break;
default:
break;
}
}
}
布局文件
<RelativeLayout 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"
tools:context="com.mkk.webviewdemo.MainActivity" >
<RelativeLayout
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="50dp" >
<Button
android:id="@+id/bt_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="返回" />
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_toRightOf="@+id/bt_refresh"
android:text="http://www.baidu.com" />
<Button
android:id="@+id/bt_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="刷新" />
</RelativeLayout>
<WebView
android:id="@+id/wv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/rl"
android:layout_marginTop="5dp" />
</RelativeLayout>
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.mkk.webviewdemo.MainActivity" >
<RelativeLayout
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="50dp" >
<Button
android:id="@+id/bt_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="返回" />
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_toRightOf="@+id/bt_refresh"
android:text="http://www.baidu.com" />
<Button
android:id="@+id/bt_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="刷新" />
</RelativeLayout>
<WebView
android:id="@+id/wv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/rl"
android:layout_marginTop="5dp" />
</RelativeLayout>
效果图
3.WebView常用相关方法
WebView常用方法:
getSettings()
返回一个WebSettings对象,用来控制WebView的属性设置
loadUrl(String url)
加载指定的UrlloadData(String data,String mimeType,String encoding)
为WebView指定一个WebViewClient对象.WebViewClient可
以辅助WebView处理各种通知,请求等事件。
setWebChromeClient(WebChromeClient client)
为WebView指定一个WebChromeClient对象,WebChromeClient专门用来辅助WebView处理js的对话框,网站title,网站图标,加载进度条等
WebSettings的常用方法:
返回一个WebSettings对象,用来控制WebView的属性设置
loadUrl(String url)
加载指定的UrlloadData(String data,String mimeType,String encoding)
加载指定的Data到WebView中.使用"data:"作为标记头,
改方法不能加载网络数据.其中mimeType为数据类型如:textml,image/jpeg.
encoding为字符的编码方式
setWebViewClient(WebViewClient client)改方法不能加载网络数据.其中mimeType为数据类型如:textml,image/jpeg.
encoding为字符的编码方式
为WebView指定一个WebViewClient对象.WebViewClient可
以辅助WebView处理各种通知,请求等事件。
setWebChromeClient(WebChromeClient client)
为WebView指定一个WebChromeClient对象,WebChromeClient专门用来辅助WebView处理js的对话框,网站title,网站图标,加载进度条等
WebSettings的常用方法:
setJavaScriptEnabled(boolean flag)
设置是否支持JavaScript
setDefaultFontSize(int size)
设置默认的字体大小setDefaultTextEncodingName(String encoding)
设置是否允许访问文件数据
setDatabaseEnabled(boolean flag)
设置是否可以使用数据库相关的api
setDatabasePath(String databasePath)若使用数据库API,该方法指定数据库文件的路径setBlockN etworkImage(boolean flag)设置是否禁止显示图片,true表示禁止图片setSavePassword(boolean save)设置是否保存密码setTextize(WebSetting.TextSize)设置页面文字大小setSupportZoom(bollean support)设置是否支持变焦
通知主程序,网页加载完毕doUpdateVisitedHistory(WebView view,String url,boolean isReload)
更新历史记录onLoadResource(WebView view,String url)
通知主程序WebView即将加载指定url的资源onScaleChanged(WebView view,float oldScale,float newScale)
ViewView的缩放发生改变时调用shouldOverrideKeyEvent(WebView view,KeyEvent event)控制webView是否处理按键时间,如果返回true
则WebView不处理,返回false则处理shouldOverrideUrlLoading(WebView view,String url)控制对新加载的Url的处理,返回true,说明主程序处理
WebView不做处理,返回false意味着WebView会
对其进行处理onReceivedError(WebView view,int errorCode,String description,
String failingUrl)遇到不可恢复的错误信息时调用
处理Js中的Confirm对话框onJsPrompt(WebView view,String url,String message
String defaultValue,,JsPromptResult result)
处理Js中的Prompt对话框onProgressChanged(WebView view,int newProgress)
当加载进度条发生改变时调用
设置是否支持JavaScript
setDefaultFontSize(int size)
设置默认的字体大小setDefaultTextEncodingName(String encoding)
设置默认字符的编码方式
setAllowFileAccess(boolean allow):设置是否允许访问文件数据
setDatabaseEnabled(boolean flag)
设置是否可以使用数据库相关的api
setDatabasePath(String databasePath)若使用数据库API,该方法指定数据库文件的路径setBlockN etworkImage(boolean flag)设置是否禁止显示图片,true表示禁止图片setSavePassword(boolean save)设置是否保存密码setTextize(WebSetting.TextSize)设置页面文字大小setSupportZoom(bollean support)设置是否支持变焦
WebViewClient的常用方法
onPageStared(WebView view,String url)通知主程序网页开始加载onPageFinished(WebView view,String url,Bitmap favicon)通知主程序,网页加载完毕doUpdateVisitedHistory(WebView view,String url,boolean isReload)
更新历史记录onLoadResource(WebView view,String url)
通知主程序WebView即将加载指定url的资源onScaleChanged(WebView view,float oldScale,float newScale)
ViewView的缩放发生改变时调用shouldOverrideKeyEvent(WebView view,KeyEvent event)控制webView是否处理按键时间,如果返回true
则WebView不处理,返回false则处理shouldOverrideUrlLoading(WebView view,String url)控制对新加载的Url的处理,返回true,说明主程序处理
WebView不做处理,返回false意味着WebView会
对其进行处理onReceivedError(WebView view,int errorCode,String description,
String failingUrl)遇到不可恢复的错误信息时调用
WebChromeClient的常用方法:
onJsAlert(WebView view,String url,String message,JsResult result)处理Js中的Alert对话框 onJsConfirm(WebView view,String url,String message,JsResult result)处理Js中的Confirm对话框onJsPrompt(WebView view,String url,String message
String defaultValue,,JsPromptResult result)
处理Js中的Prompt对话框onProgressChanged(WebView view,int newProgress)
当加载进度条发生改变时调用
1 0
- 初涉WebView编程
- android 编程--webview
- 网络编程--WebView
- Android网络编程之WebView
- iOS编程 -- webView的使用
- Android编程 - WebView控件基本使用方法
- Android网络编程之webview开发
- Android网络编程之WebView【实例解析】
- android网络编程 五(WebView)
- Android网络编程之WebView初探
- 安卓网络编程-WebView基本用法
- WebView
- WebView
- WebView
- webView
- webView
- webview
- webview
- jquery分页插件特效源代码
- 满状态回归
- Thinking in java -- 动态代理
- Android笔记——Handler
- Python Tutorial(六):模块
- 初涉WebView编程
- Android笔记(三)杂记待续
- linux编译过程
- 一、Shiro+Spring+Struts2集成演示权限控制Demo示例
- Android getLeft
- NSOperationQueue的简单应用
- Gas Station
- AOP OOP介绍
- Python Tutorial(六):模块