android webview 初步应用

什么是WEBVIEW

activity里面显示网页的控件;

具备加载,解析,显示网页的功能;

使用方法:

(1).在布局中加入WebView组件;

(2).在程序调用时加入webViewloadURL()方法指定要加载的网址;

(3).Manifest文件中设置因特网的使用权限。

默认只有显示网页的简单功能,按了系统默认返回键会自动退出程序。

Webview使用的最佳实例

 

wv = (WebView) findViewById(R.id.wv);
wv.getSettings().setJavaScriptEnabled(true); wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);  
wv.getSettings().setSupportMultipleWindows(true);  
wv.setWebViewClient(new WebViewClient());  
wv.setWebChromeClient(new WebChromeClient());
wv.loadUrl("http://www.baidu.com");

 

如果采用下面这个方法的话,虽然不会跳转到系统的浏览器,但是不支持js等功能,因设置webSetting

//wv.setWebViewClient(new WebViewClient(){
//@Override
//public boolean shouldOverrideUrlLoading(WebView view, String url) {
//return false;
//}
//});

 

其中用到了android.webkit程序包里面的其他类,最重要的就是

 

WebSettings 用于控制webView的基本设置,例如启动网页缩放和启用javaScript功能 ;

WebViewClient 用于控制WebView本身的行为,通过此类对象,可以获取网页相关事件,例如,想在用户单击网页中的超链接,网页加载的开始/结束等时机进行控制;

WebChromeClient 用于制作和网页有关,但属于WebView之外的效果,例如例如想要在载入页面时候显示进度

webkit是一套开放源码的浏览器引擎。

 

要求重写onKeyDown方法,捕捉logcat的报错

UnimplementedWebViewApi(4510): Unimplemented WebView method 

onKeyDown

called from: android.webkit.WebView.onKeyDown(WebView.java:2169)

 

 

一切的起源都得通过webview对象的getSetting()方法获取webSetting对象

 

Progress的分类

1.有进度的进度条

ProgressBarLarge

ProgressBarNormal

ProgressBarSmall

 

2.没有进度的转圈圈

ProgressBarHorizontal

 

//wv.getSettings().setSupportZoom(true);//启用缩放功能,不正常关闭会引起窗体泄露,这行代码影响的

//尽量避免使用放大缩小工具

 

ProgressBar的使用

setProgress(int progress) 来改变进度值

OnBackPressed() 实现回上一页功能

 

@Override
public void onBackPressed() {
if(wv.canGoBack()){
wv.goBack();
return;
}
//系统默认直接退出当前webView
super.onBackPressed();
}

用来处理显示进度
wv.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
//第一个参数是正在载入的webView,第二个参数是进度值
//加入自己的进度显示处理程序
pb.setProgress(newProgress);
pb.setVisibility(newProgress <100?View.VISIBLE:View.GONE);
}
});//创建网页开启进度接口

 其他的常用方法

wv.zoomIn();//放大

wv.zoomOut();//缩小


webview测试源码

package com.yqq.webview;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.widget.ProgressBar;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

	private WebView wv;
	private ProgressBar pb;
	
	@SuppressLint("SetJavaScriptEnabled")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//必须在setContentView()前面
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		//webView使用的最佳实践
		wv = (WebView) findViewById(R.id.wv);
		//wv.getSettings().setSupportZoom(true);//启用缩放功能,不正常关闭会引起窗体泄露,这行代码影响的
		//wv.invokeZoomPicker();//显示缩放小工具不正常关闭会引起窗体泄露,这行代码影响的
		wv.getSettings().setBuiltInZoomControls(true);//启用缩放工具,
		wv.getSettings().setJavaScriptEnabled(true); //启用javaScipt功能
		wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//启用自动开启多窗口  
		wv.getSettings().setSupportMultipleWindows(true); //启用多窗口功能
		//自适应屏幕  
        wv.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);  
        wv.getSettings().setLoadWithOverviewMode(true);
		wv.setWebViewClient(new WebViewClient(){
			
		});//用于处理开启超链接操作  
		wv.setWebChromeClient(new WebChromeClient(){
			@Override
			public void onProgressChanged(WebView view, int newProgress) {
				//第一个参数是正在载入的webView,第二个参数是进度值
				//加入自己的进度显示处理程序
				pb.setProgress(newProgress);
				pb.setVisibility(newProgress <100?View.VISIBLE:View.GONE);
			}
		});//创建网页开启进度接口
		wv.setInitialScale(0);//设置缩放比例
		wv.loadUrl("http://www.baidu.com");
		
//		wv.setWebViewClient(new WebViewClient(){
//			@Override
//			public boolean shouldOverrideUrlLoading(WebView view, String url) {
//				view.LoadUrl();		
//				return super.shouldOverrideUrlLoading(view, url);
//			}
//		});
		
		pb = (ProgressBar) findViewById(R.id.pb);
	}
	
	@Override
	public void onBackPressed() {
		if(wv.canGoBack()){
			wv.goBack();
			return;
		}
		//系统默认直接退出当前webView
		super.onBackPressed();
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
	}
}

对应的布局文件

<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="${relativePackage}.${activityClass}" >

    
    <ProgressBar
        android:id="@+id/pb"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="-6dp"/>
    <WebView
        android:id="@+id/wv"
        android:layout_below="@+id/pb"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    

</RelativeLayout>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值