使用WebView自定义加载网页

 

通过Intent调用系统浏览器
Uri uri = Uri.parse(url);//url为你要链接的地址
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
使用WebView自定义加载网页

(1)、将webView加入自己的应用
(2)、使用WebView加载页面
(3)、获取网络访问权限
(4)、在WebView中使用javascript
(5)、处理也页面导航
(6)、后退与前进
(7)、判断页面加载过程
(8)、WebView缓存的应用
注意:使页面获取焦点:webview.requestFocus();//响应事件

loadUrl();
——加载本地资源:assets中的"file:///android_asset/xx.html"
——加载web资源:loadUrl("rul")
——默认的是浏览器打开
使用自定义webview打开实现:
——覆盖第三方、默认的浏览器:
——setWebViewClient(new WebViewClient());实现WebViewClient里面
shouldOverrideUrlLoading(WebView view, String url)方法
——这里返回true是控件webview打开、false系统调用浏览器打开(第三方)


在webview的web界面中使用Javascript
在webview启用Javascript通过Websettings来启用它
通过webview.getSettings()来获取Websettings的对象
通过setJavaScriptEnabled()来启用Javascript。
Websettins setings=web.getSettings();——外部设置
settings.setJavaScriptEnabled(true);
//true允许使用JavaScript脚本:false则相反

页面的后退与前进处理:
前提:当你的Webview覆盖率Url加载,他会自动生成历史访问记录。
——改写物理按键的逻辑
——你可以通过goBack()或goForward()向前向后访问以访问过的站点
public boolean onKeyDown(int keyCode,keyEvent event )
{//如果按下的按钮等于“返回键”
if(keyCode==keyEvent.KEYCODE_BACK&&webview.canGoBack()){
webview.goBack();//返回上一个页面
return true;
}else{System.exit(0);//退出程序}


判断页面加载进度:
Webview .setWebChromeClient(new WebChromeClient){
重写WebChromeClient类中onProgressChanged();方法
方法中有一个int参数(1-100)代表当前进度
当进度为100关闭进度条;else打开进度条
}

解决webview速度——缓存:
webview加载页面优先加载缓存
优先使用缓存:settings.setCacheMode(WebSttings.LOAD_CACHE_ELSE_NETWORK);
不使用缓存:

使用WebView自定义加载网页的代码:

package zxx.webview;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

public class MainActivity extends Activity {
	WebView webview;
	ProgressBar mprogressbar;
	String Url = "http://2014.qq.com/";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 通过默认的浏览器打开网页
//		Uri uri = Uri.parse(Url);// 转换成为一标识符
//		Intent mintent = new Intent(Intent.ACTION_VIEW, uri);// 通过intent打开默认浏览器
//		startActivity(mintent);
	inti();
	} 

	public void inti() {
		webview = (WebView) findViewById(R.id.webView);
		webview.loadUrl("http://2014.qq.com/");
		//覆盖第三方、默认的浏览器
		webview.setWebViewClient(new WebViewClient() {
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				view.loadUrl(url);
				return true;
			}

		});
		//设置浏览方式
		WebSettings webset=webview.getSettings();
		webset.setJavaScriptEnabled(true);//true允许使用JavaScript脚本:false则相反
		webset.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
		//显示网页加载进度;
		webview.setWebChromeClient(new WebChromeClient(){
			@Override
			public void onProgressChanged(WebView view, int newProgress) {
				// TODO Auto-generated method stub
				super.onProgressChanged(view, newProgress);
				if (newProgress==100) {
					//关闭进度条
				} else {
					//打开进度条
				}
			}
		});
	}
	//网站重定向的原因要多次返回才会退出
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		//判断是不是返回键并且webview能不能返回
		if (keyCode==KeyEvent.KEYCODE_BACK&&webview.canGoBack()) {
			webview.goBack();
		}else{
			System.exit(0);
		}
		return true;
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}


 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值