IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]15_android-WebView的简单实用介绍

    redarmy_chen发表于 2015-01-04 17:30:03
    love 0

    WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。

    它的实现方式有如下两种:

    1.第一种实现步骤

    1、在布局文件中声明WebView(activity_main.xml)

    
    
        
    
    

    2、在Activity中实例化WebView(MainActivity)

    private WebView webView;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		// 获取控件对象
    		webView = (WebView) findViewById(R.id.webView1);
                }


    3、调用WebView的loadUrl( )方法,设置WebView要显示的网页

    // 设置显示的网页
    		webView.loadUrl("http://www.baidu.com");

    备注1:如果访问的页面中有Javascript,则webview必须设置支持Javascript,否则页面也是空白

    	       // 获取WebView属性
    		WebSettings websettings = webView.getSettings();
    		// 设置支持javascript代码
    		websettings.setJavaScriptEnabled(true);

    备注2:如果需要访问网络需要添加网络访问的权限,否则会出现Web page not available错误

    

    4、为了让WebView能够在当前组件中响应超链接功能,而非新打开android系统中的浏览器响应该链接,必须调用setWebViewClient( )方法,设置 WebView视图

    	       // 设置视图
    		webView.setWebViewClient(new WebViewClient() {
    			@Override
    			public boolean shouldOverrideUrlLoading(WebView view, String url) {
    				// 打开地址
    				view.loadUrl(url);
    				// 返回的是true,代表在webView控件中打开,否则在系统的浏览器中打开
    				return true;
    			}
    		});
    5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退键,会调用finish()而结束自身,而不是回退到上一页面

    	// 后退的操作实现
    	@Override
    	public boolean onKeyDown(int keyCode, KeyEvent event) {
    		if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
    			Toast.makeText(this, "hohouhouhou", 1).show();
    			webView.goBack();
    			return true;
    		} else {
    			return super.onKeyDown(keyCode, event);
    		}
    	}


    如果版本大于2.0也可以直接使用

    	// 后退操作  android2.0
    	@Override
    	public void onBackPressed() {
    		Toast.makeText(this, "后退键", 1).show();
    		// 判断是否能够回退
    		if (webView.canGoBack()) {
    			webView.goBack();// 返回
    		} else {
    			super.onBackPressed();
    		}
    	}


    2.第二种实现步骤

    把第一种实现步骤的1,2两个步骤改成:如下操作

    public class MainActivity extends Activity {
    
    	private WebView webView;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    
    		// 创建控件对象
    		webView = new WebView(this);
    
    	      // 设置显示的视图为创建的控件即可
    	     setContentView(webView);
    }


    实现效果如下:

    备注:关于WebSettings与WebViewClient常用方法的说明

    WebSettings常用方法:

            setAllowFileAccess 启用或禁止WebView访问文件数据
    	setBlockNetworkImage 是否显示网络图像
    	setBuiltInZoomControls 设置是否支持缩放
    	setCacheMode 设置缓冲的模式
    	setDefaultFontSize 设置默认的字体大小
    	setDefaultTextEncodingName 设置在解码时使用的默认编码
    	setFixedFontFamily 设置固定使用的字体
    	setJavaSciptEnabled 设置是否支持Javascript
    	setLayoutAlgorithm 设置布局方式
    	setLightTouchEnabled 设置用鼠标激活被选项
    	setSupportZoom 设置是否支持变焦


    WebViewClient常用方法:
            doUpdateVisitedHistory 更新历史记录
    	onFormResubmission 应用程序重新请求网页数据
    	onLoadResource 加载指定地址提供的资源
    	onPageFinished 网页加载完毕
    	onPageStarted 网页开始加载
    	onReceivedError 报告错误信息
    	onScaleChanged WebView发生改变
    	shouldOverrideUrlLoading 控制新的连接在当前WebView中打开还是在系统浏览器中打开





沪ICP备19023445号-2号
友情链接