使用WebView简单嵌套页面

来源:互联网 发布:php命名空间的作用 编辑:程序博客网 时间:2024/05/31 06:21

webview是一个特殊的view,用于在此view上展示一个页面。该页面的js可以与android端的java代码中的方法互调,还能实现网页前进后退,网页放大,缩小,搜索等功能。

1、webview的使用

首先在layout下创建xml文件,添加webview控件

 <WebView        android:id="@+id/webview"        android:layout_width="match_parent"        android:layout_height="match_parent">    </WebView>

在java代码中声明webview,url为你要访问的网址

private WebView webView;webView = (WebView) findViewById(R.id.webview);webView.loadUrl(url);//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开        webView.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器                view.loadUrl(url);                return true;            }        });

创建WebSettings对象,监听加载过程

WebSettings webSettings = webView.getSettings();        webSettings.setJavaScriptEnabled(true);        webSettings.setAllowContentAccess(true);        webSettings.setAppCacheEnabled(false);        webSettings.setBuiltInZoomControls(false);        webSettings.setUseWideViewPort(true);        webSettings.setLoadWithOverviewMode(true); webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);webView.setWebChromeClient(new WebChromeClient() {            @Override            public void onProgressChanged(WebView view, int newProgress) {                // TODO Auto-generated method stub                if (newProgress == 100) {                    Log.e("aaa", "加载完成");                } else {                    Log.e("aaa", "加载中");                }            }        });

2、复写物理返回键

 //改写物理按键——返回的逻辑    @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 {                System.exit(0);//退出程序            }        }        return super.onKeyDown(keyCode, event);    }

3、添加网络访问权限

  <!--用于访问网络,网络定位需要上网-->  <uses-permission android:name="android.permission.INTERNET"/>  <!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

4、一般需要配合使用menu菜单

创建res/menu/main.xml

menu xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      tools:context="www.csy.com.newapp.activity.MainActivity" >    <item        android:id="@+id/change"        android:orderInCategory="100"        android:showAsAction="always"        android:title="切换账号"/></menu>

在java代码中声明逻辑

 //重写onCreateOptionMenu(Menu menu)方法,当菜单第一次被加载时调用    @Override    public boolean onCreateOptionsMenu(Menu menu) {        //填充选项菜单(读取XML文件、解析、加载到Menu组件上)        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    //重写OptionsItemSelected(MenuItem item)来响应菜单项(MenuItem)的点击事件(根据id来区分是哪个item)    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            case R.id.change:               //此处写单击菜单按钮中的逻辑                break;            default:                break;        }        return super.onOptionsItemSelected(item);    }

5、WebSettings详解

http://blog.csdn.net/kevinscsdn/article/details/52241334此篇博客介绍的比较详细,一般错误都出在WebSettings设置的不全。