使用WebView简单嵌套页面

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设置的不全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值