WebView控件的简单应用

    WebView是Android提供的一个显示网页的控件,它使用了WebKit渲染引擎来显示网页,对网页的加载做了高度的优化,在实际开发中也比较常用。

    WebView通过webView.loadUrl(Url url)传入一个Url对象来来加载一个网页。所以,我们不仅可以加载外部资源(如“http://www.baidu.com”),也可以加载内部的资源(如"file:///android_asset/index.html",表示加载asset目录下的index.html,“file://android_”是引入内部资源的前缀)

    注意:
    (1)当加载完一个网页后,如果没有对该网页进行缓存,当再次浏览该网页时,会重新加载,既费时又费流量。这时就需要对网页进行缓存,当再次浏览时会加载缓存中网页,这样显得很快捷。

    webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

    (2)不要忘记在清单文件中注册网络权限:
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>



    效果预览:

1.在布局中创建控件

    在主布局文件中添加“WebView”标签对,并设置属性:
<WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </WebView>

2.MainActivity类

package com.example.lowp.webview_test;

import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private WebView webView;
    private ProgressDialog dialog;
    private String mUrl = "http://2014.qq.com/";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        webView = (WebView) findViewById(R.id.webview);

        //加载本地资源(asset文件夹下)
//        webView.loadUrl("file://android_asset/index.html");
        //加载外部资源
        webView.loadUrl(mUrl);



        //获取WebSettings对象
        WebSettings webSettings = webView.getSettings();
        //支持JavaScript
        webSettings.setJavaScriptEnabled(true);
        //使用网页缓存(把已经加载的网页缓存起来)
        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);


        /**
         * WebViewClient是一个辅助类,帮助wbeview去处理一些网页的通知和请求
         */
        webView.setWebViewClient(new WebViewClient() {

            /**
             * 当点击一个链接时调用,返回true表示网页在当前webview中处理这个url
             * 返回false表示调用系统提供的浏览器中处理
             */
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                webView.loadUrl(url);
                Log.i("zxc", "shouldOverrideUrlLoading");

                return true;
            }
        });


        /**
         * WebChromeClient是一个辅助类,帮助WebView处理Javascript的对话框,网站图标,网站title,加载进度等
         */
        webView.setWebChromeClient(new WebChromeClient(){

            /**
             *
             */
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                if(newProgress == 100){
                    closeDialog();
                }else{
                    openDilog(newProgress);
                }

            }

        });


         }


          /**
           *  网页加载进度对话框
           */
        public void openDilog(int newProgress){

            if(dialog == null){
                dialog = new ProgressDialog(MainActivity.this);
                dialog.setTitle("LOADING......");
                dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                dialog.setProgress(newProgress);
                dialog.show();
            }else{
                //刷新进度
                dialog.setProgress(newProgress);
            }
        }


        public void closeDialog(){
            if(dialog != null && dialog.isShowing()){
                dialog.dismiss();
                dialog = null;
            }
        }


    /**
     * 改写返回键
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == event.KEYCODE_BACK){
            //判断是否可以返回
            if(webView.canGoBack()){
                webView.goBack();
                Toast.makeText(MainActivity.this,"back!",Toast.LENGTH_SHORT).show();
                return true;
            }else{
                //退出
                System.exit(0);
            }
        }

        return super.onKeyDown(keyCode, event);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值