webView的基本使用


1.使用Intent访问网页

1.使用intent 访问网页
String url="http://www.imooc.com/course/list";
Uri uri=Uri.parse(url);
		Intent intent=new Intent(Intent.ACTION_VIEW,uri);
		startActivity(intent);</span>

2.使用WebView

   1). 在layout中使用WebView标签

      

<WebView 
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

  2).  注册访问网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
  

  3).两种访问方式:

   /*访问本地文件*/
        //mweiView.loadUrl("file:///android_asset/hjo.html");

       // 当点击没有反应时,是因为webView没有获取焦点 加上WebView.requestFocus() 即可
        
   /*访问web程序*/
        mweiView.loadUrl(url);

   4).如何在webView内部加载网页而不需要通过第三方浏览器

      

/*覆盖WebView默认通过第三方或者系统自带浏览器打开网页的行为   使得网页可以自动打开   即:不需要选择用哪一个浏览器打开*/
		/*此时 WebView会生成访问历史记录,可以通过goBack(),goForward()返回或向前访问已经访问过的站点*/
		mweiView.setWebViewClient(new WebViewClient(){
			//复写下面的方法    该方法的返回值决定了是在WebView内部打开网页还是通过第三方浏览器打开的
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				// TODO Auto-generated method stub
				//返回true时,在WebView内打开  返回false时  通过第三方浏览器或者系统自带浏览器打开
				view.loadUrl(url);//修改返回值 然后返回true即可在WebView内打开网页
				return true;
				//return super.shouldOverrideUrlLoading(view, url);
			}

  5).判断webView的加载进度

   

/*如何判断webView页面的加载过程*/
		mweiView.setWebChromeClient(new WebChromeClient(){
			@Override
			public void onProgressChanged(WebView view, int newProgress) {
				// TODO Auto-generated method stub
			//	super.onProgressChanged(view, newProgress);
				if (newProgress==100) {//页面加载完毕
					closeDialog(newProgress);//页面加载完成则关闭对话框
				}else{//页面继续加载  
					openDialog( newProgress);//页面还在加载 则打开对话框
				}
			}

   6).支持使用javascript和缓存

     

	/*当需要在WebView中支持使用javascript脚本语言时 需要进行的设置 */
		WebSettings webSettings=mweiView.getSettings();
		webSettings.setJavaScriptEnabled(true);
		
		/*webView 如何使用缓存  默认情况下webView是不用缓存的 */
	//	webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存
		webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//优先使用缓存
		

7).覆盖WebView默认通过第三方或者系统自带浏览器打开网页的行为,此时 WebView会生成访问历史记录,可以通过goBack(),goForward()返回或向前访问已经访问过的站点

  

/*改写物理按键 返回的逻辑*/
	@Override
		public boolean onKeyDown(int keyCode, KeyEvent event) {
			// TODO Auto-generated method stub
		if (keyCode==KeyEvent.KEYCODE_BACK) {
			//此时返回页面时已经不是原来的url  而是通过重定向获取到的页面 
			//由于重定向的原因  当点击返货不能退出WebView时  可多次点击返回
			if (mweiView.canGoBack()) {//如果还能返回  则直接返回
				mweiView.goBack();
				
			}else{
				System.exit(0);
			}
		}
		
			return super.onKeyDown(keyCode, event);
		}


运行效果:

  

以下是完整的代码:

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.HttpAuthHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {
private String url="http://www.imooc.com/course/list";
private WebView mweiView;
private ProgressDialog dialog;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
//		Uri uri=Uri.parse(url);
//		Intent intent=new Intent(Intent.ACTION_VIEW,uri);
//		startActivity(intent);
		initView();//注册控件
	}
	private void initView() {
		// TODO Auto-generated method stub
		mweiView=(WebView)findViewById(R.id.webview);
		/*访问本地文件*/
		//mweiView.loadUrl("file:///android_asset/hjo.html");
		
		/*访问web程序*/
		mweiView.loadUrl(url);
		
		/*覆盖WebView默认通过第三方或者系统自带浏览器打开网页的行为   使得网页可以自动打开   即:不需要选择用哪一个浏览器打开*/
		/*此时 WebView会生成访问历史记录,可以通过goBack(),goForward()返回或向前访问已经访问过的站点*/
		mweiView.setWebViewClient(new WebViewClient(){
			//复写下面的方法    该方法的返回值决定了是在WebView内部打开网页还是通过第三方浏览器打开的
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				// TODO Auto-generated method stub
				//返回true时,在WebView内打开  返回false时  通过第三方浏览器或者系统自带浏览器打开
				view.loadUrl(url);//修改返回值 然后返回true即可在WebView内打开网页
				return true;
				//return super.shouldOverrideUrlLoading(view, url);
			}
			/**
			 * 对HTTP请求的处理
			 */
			@Override
			public void onReceivedHttpAuthRequest(WebView view,
					HttpAuthHandler handler, String host, String realm) {
				// TODO Auto-generated method stub
				super.onReceivedHttpAuthRequest(view, handler, host, realm);
			}
			/**
			 * 页面开始时需要做的处理
			 */
			@Override
			public void onPageStarted(WebView view, String url, Bitmap favicon) {
				// TODO Auto-generated method stub
				super.onPageStarted(view, url, favicon);
			}
			/**
			 * 页面处理完成时 需要做的处理
			 */
			@Override
			public void onPageFinished(WebView view, String url) {
				// TODO Auto-generated method stub
				super.onPageFinished(view, url);
			}
		});//webViveClient的作用:帮助WebView处理一些页面控制和处理通知
		
		/*当需要在WebView中支持使用javascript脚本语言时 需要进行的设置 */
		WebSettings webSettings=mweiView.getSettings();
		webSettings.setJavaScriptEnabled(true);
		
		/*webView 如何使用缓存  默认情况下webView是不用缓存的 */
	//	webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//不使用缓存
		webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//优先使用缓存
		
		
		
		/*如何判断webView页面的加载过程*/
		mweiView.setWebChromeClient(new WebChromeClient(){
			@Override
			public void onProgressChanged(WebView view, int newProgress) {
				// TODO Auto-generated method stub
			//	super.onProgressChanged(view, newProgress);
				if (newProgress==100) {//页面加载完毕
					closeDialog(newProgress);//页面加载完成则关闭对话框
				}else{//页面继续加载  
					openDialog( newProgress);//页面还在加载 则打开对话框
				}
			}
			private void openDialog( int newProgress) {
				// TODO Auto-generated method stub
				if (dialog==null) {
					dialog=new ProgressDialog(MainActivity.this);
					dialog.setTitle("正在加载···");
					dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//横向进度条
					dialog.setProgress(newProgress);//显示进度条
					dialog.show();
				}else{//不为空时更新进度即可
					dialog.setProgress(newProgress);
				}
			}

			private void closeDialog( int newProgress) {
				// TODO Auto-generated method stub
				if (dialog!=null&&dialog.isShowing()) {//当dialog不为空且正在显示
					dialog.dismiss();
					dialog=null;
				}
			}
		});
		
		
		
	}

	/*改写物理按键 返回的逻辑*/
	@Override
		public boolean onKeyDown(int keyCode, KeyEvent event) {
			// TODO Auto-generated method stub
		if (keyCode==KeyEvent.KEYCODE_BACK) {
			//此时返回页面时已经不是原来的url  而是通过重定向获取到的页面 
			//由于重定向的原因  当点击返货不能退出WebView时  可多次点击返回
			if (mweiView.canGoBack()) {//如果还能返回  则直接返回
				mweiView.goBack();
				
			}else{
				System.exit(0);
			}
		}
		
			return super.onKeyDown(keyCode, event);
		}
	

}









   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值