WebView

Android WebView在Android平台上是一个特殊的View, 他能用来显示网页,这个类可以被用来在你的app中仅仅显示一张在线的网页,还可以用来开发浏览器。WebView内部实现是采用渲染引擎来展示view的内容,提供网页前进后退,网页放大,缩小,搜索,前端开发者可以使用web inspector(Android 4.4系统支持,4.4一下可以采用http://developer.android.com/guide/webapps/debugging.html)调试HTML,CSS,JavaScript等等功能。在Android 4.3系统及其一下WebView内部采用Webkit渲染引擎,在Android 4.4采用chromium 渲染引擎来渲染View的内容。

WebView的基本使用:

1.初始化控件,并添加访问网络的权限

    private WebView base_webview;
    private LinearLayout activity_main;
    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件,加权限
        initView();
    }

    private void initView() {
        base_webview = (WebView) findViewById(R.id.base_webview);
        activity_main = (LinearLayout) findViewById(R.id.activity_main);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
    }
访问网络权限:
<uses-permission android:name="android.permission.INTERNET"/>

2.加载网页,默认会跳到系统默认浏览器进行加载

base_webview.loadUrl("http://www.baidu.com");
3.为WebView添加主要处理解析,就是渲染网页等浏览器做的事情.

base_webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
4.与JS交互,使显示的网页能加载出图片,并且设置WebView支持缓存,优先使用缓存

//获取WebView的设置对象
        WebSettings settings = base_webview.getSettings();
        //使webView具备支持JS互调的能力
        settings.setJavaScriptEnabled(true);
        //设置WebView支持缓存 参数Load_yWebView优先使用缓存
        settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
5.添加WebView辅助处理JS,并使用ProgressBar来动态显示加载网页的进度条

//辅助WebView处理JS
        base_webview.setWebChromeClient(new WebChromeClient() {
            //处理进度条的监听方法,newProgress参数就是加载网页的进度值(当进度值为100的时候,表示加载网页完毕)
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                if (newProgress == 100) {
                    //当网页加载完毕时,隐藏ProgressBar
                    progressBar.setVisibility(View.GONE);
                } else {
                    //加载网页中,显示ProgessBar,同事进度条的值动态显示
                    progressBar.setVisibility(View.VISIBLE);
                    progressBar.setProgress(newProgress);
                }
            }
        });
6.最后复写onKeyDown方法,使程序实现当用户点击退出时,如果有上一层网页,返回上一层,如果没有则退出程序的功能.

//使用户按退出时,先是按层级退出网页,最后退出程序(如果没有这段代码,用户会直接退出程序)
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //就复写手机上退出按钮的逻辑,改成我们自己的逻辑
        if (keyCode == KeyEvent.KEYCODE_BACK){
            //判断WebView还有没有上一个层级可以退出,如果有,就退出到上一个网页里
            if (base_webview.canGoBack()){
                base_webview.goBack();
                return true;
                //如果没有就关闭Activity
            }else{
                finish();
            }
        }
        return super.onKeyDown(keyCode, event);
    }
MainActivity布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/activity_main"
    >

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"/>
    <WebView
        android:id="@+id/base_webview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></WebView>
</LinearLayout>







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值