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

android:使用webview显示网页

2016-02-21 23:39 423 查看
学到现在。。懵懵懂懂 还是先上运行结果



大家看到返回的时候要点很多次返回 。这是因为页面会有快速跳转过程 所以多按几次返回把 没办法

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

	<WebView 
	    android:id="@+id/webView"
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
	    />
</LinearLayout>


MainActivity

package com.example.webview;

import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.Window;
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://news.qq.com/";
	private WebView webView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//窗口进度条
		requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
		setContentView(R.layout.activity_main);
		setProgressBarIndeterminate(true);
		webView=(WebView) findViewById(R.id.webView);
		//webView加载web资源
		webView.loadUrl(url);
		//覆盖webView默认通过系统或者第三方浏览器打开网页的行为
		//如果为false调用系统或者第三方浏览器打开网页的行为
		webView.setWebViewClient(new WebViewClient(){
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				// TODO Auto-generated method stub
				//webView加载web资源
				view.loadUrl(url);
				return true;
			}
		});
		//启用支持javascript
		WebSettings settings=webView.getSettings();
		settings.setJavaScriptEnabled(true);
		//web加载页面优先使用缓存加载
		settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
		webView.setWebChromeClient(new WebChromeClient(){
			@Override
			public void onProgressChanged(WebView view, int newProgress) {
				// TODO Auto-generated method stub
				setTitle("本页面已加载"+newProgress+"%");
				if(newProgress==100){
					closeProgressBar();
				}
				else{
					openProgressBar(newProgress);
				}
				super.onProgressChanged(view, newProgress);
			}
		});
	}
	//打开进度条
	protected void openProgressBar(int x) {
		// TODO Auto-generated method stub
		setProgressBarIndeterminateVisibility(true);
		setProgress(x);
	}
	//关闭进度条
	protected void closeProgressBar() {
		// TODO Auto-generated method stub
		setProgressBarIndeterminateVisibility(false);
	}
	//改写物理按键 返回键的逻辑
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if(keyCode==KeyEvent.KEYCODE_BACK){
			if(webView.canGoBack()){
				//返回上一页面
				webView.goBack();
				return true;
			}
			else{
				//退出程序
				finish();
			}
		}
		return super.onKeyDown(keyCode, event);
	}
}
最后别忘记在AndroidManifest.xml配置获取网络的权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: