您的位置:首页 > 移动开发 > Android开发

android WebView 详细代码

2016-03-15 20:21 555 查看
简单粗暴有效的代码

案例代码:

package com.itcast.webviewdemo;

import android.app.Activity;

import android.graphics.Bitmap;

import android.os.Bundle;

import android.view.View;

import android.webkit.JavascriptInterface;

import android.webkit.WebChromeClient;

import android.webkit.WebSettings;

import android.webkit.WebView;

import android.webkit.WebViewClient;

import android.widget.Toast;

public class MainActivity extends Activity {

    private WebView mWebview;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        //1.控件的加载-------------------------------

 

        mWebview = (WebView) findViewById(R.id.webview); 

       

        //2.设置对象的获取-------------------------------

 

        WebSettings settings = mWebview.getSettings();// 获取设置对象

 

         //3.设置参数的添加-------------------------------

 

        settings.setJavaScriptEnabled(true);// 支持js效果

        settings.setBuiltInZoomControls(true);// 显示放大缩小按钮(不支持wap网页)

        settings.setUseWideViewPort(true);// 支持双击缩放(不支持wap网页)

        // webview加缓存

        // settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//

        // 只要有缓存,就优先加载缓存;没缓存就请求网络

        // settings.setCacheMode(WebSettings.LOAD_CACHE_ONLY);// 只加载缓存

        // settings.setCacheMode(WebSettings.LOAD_NO_CACHE);// 不加载缓存

        // 根据cache-control决定是否从网络上取数据

        // 什么是cache-control?

        // cache-control是在请求网页时服务器的响应头,此响应头用于决定网页的缓存策略.

        // 常见的取值有public(所有内容都将被缓存),

        // private(内容只缓存到私有缓存中),no-cache(所有内容都不会被缓存),max-age=xxx(缓存的内容将在 xxx

        // 秒后失效)等等

        settings.setCacheMode(WebSettings.LOAD_DEFAULT);// 默认模式

        // mWebview.clearCache(true);//清除缓存

             mWebview.setWebViewClient(new WebViewClient() {

            @Override

            public void onPageStarted(WebView view, String url, Bitmap favicon) {

                super.onPageStarted(view, url, favicon);

                System.out.println("开始加载网页....");

            }

            @Override

            public void onPageFinished(WebView view, String url) {

                super.onPageFinished(view, url);

                System.out.println("网页加载结束....");

            }

            // webview的所有链接跳转都会走此回调方法

            @Override

            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                System.out.println("跳转链接:" + url);

                // 如果希望一直在当前webview加载网页, 而不跳转浏览器的话

                view.loadUrl(url);

                // <a href="tel:110">联系我们</a>

                return true;

                // return super.shouldOverrideUrlLoading(view,

                // url);//此方法是由系统决定使用当前webview加载还是跳浏览器

            }

        });

        mWebview.setWebChromeClient(new WebChromeClient() {

            // 网页加载进度发生变化

            @Override

            public void onProgressChanged(WebView view, int newProgress) {

                super.onProgressChanged(view, newProgress);

                System.out.println("progress-->" + newProgress);

            }

            // 获取网页标题

            @Override

            public void onReceivedTitle(WebView view, String title) {

                super.onReceivedTitle(view, title);

                System.out.println("网页标题:" + title);

            }

        });

        // <a onClick="window.demo.onCallback()">点我!</a>

        // 网页调用格式: window.NAME.回调方法名称

        mWebview.addJavascriptInterface(new OnJsCallback() {

            @JavascriptInterface//注意:此处一定要加该注解,否则在4.1+系统上运行失败

            @Override

            public void onCallback() {

                Toast.makeText(getApplicationContext(), "Js调用Android啦",

                        Toast.LENGTH_SHORT).show();

            }

        }, "demo");

        // 使用webview加载网页

        mWebview.loadUrl("http://www.baidu.com");// wap网页

   

    }

    @Override

    public void onBackPressed() {

        if (mWebview.canGoBack()) {// 判断是否可以跳到上一个页面

            mWebview.goBack();// 跳到上一个页面

        } else {

            finish();

        }

        // mWebview.goForward();//跳到下一个页面

        // mWebview.canGoForward();//是否可以跳到下一个页面

    }

    // Android调用Js

    public void androidCallJs(View view) {

        // 直接使用webview加载js就可以了

        mWebview.loadUrl("javascript:wave()");

    }

    // js调用android的回调接口

    public interface OnJsCallback {

        public void onCallback();

    }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  webview android