您的位置:首页 > 移动开发

使用WebView自定义加载网页

2016-01-01 15:47 597 查看
通过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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: