使用WebView自定义加载网页

来源:互联网 发布:中国软件增发价 编辑:程序博客网 时间:2024/06/06 00:39

 

通过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/";@Overrideprotected 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() {@Overridepublic 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(){@Overridepublic void onProgressChanged(WebView view, int newProgress) {// TODO Auto-generated method stubsuper.onProgressChanged(view, newProgress);if (newProgress==100) {//关闭进度条} else {//打开进度条}}});}//网站重定向的原因要多次返回才会退出@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {//判断是不是返回键并且webview能不能返回if (keyCode==KeyEvent.KEYCODE_BACK&&webview.canGoBack()) {webview.goBack();}else{System.exit(0);}return true;}@Overridepublic 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;}@Overridepublic 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