zoukankan      html  css  js  c++  java
  • Android WebView的使用方法总结

    本文主要讲解WebView的一些常用使用方法

    代码如下:

    xml文件:


    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

        xmlns:tools="http://schemas.android.com/tools"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical" >

        <WebView

            android:id="@+id/webView1"

            android:layout_width="match_parent"

            android:layout_height="0dip"

            android:layout_weight="1" />

            <ProgressBar

                android:id="@+id/progressBar1"

                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal" />
    </LinearLayout>

    1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。

    2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
            webview.getSettings().setJavaScriptEnabled(true);

    3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。

    webView.setWebViewClient(new WebViewClient() {
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }
            });

    4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。


    public boolean onKeyDown(int keyCode, KeyEvent event) {
            if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {

                webView.goBack();
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }

    5.android中webview支持javascript自定义对象

    a.设置webview支持javascript.  webSettings.setJavaScriptEnabled(true);

    b.绑定android对象到javascript对象. addJavascriptInterface(Object obj,String interfaceName);

    c.页面中调用javascript对象. javascript:window.demo.方法名称();

    在w3c标准中js有 window,history,document等标准对象,同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以 为所欲为了。


    public class WebViewDemo extends Activity {

        private WebView mWebView;

        private Handler mHandler = new Handler();

        public void onCreate(Bundle icicle) {

            super.onCreate(icicle);

            setContentView(R.layout.webviewdemo);

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

            WebSettings webSettings = mWebView.getSettings();

            webSettings.setJavaScriptEnabled(true);

            mWebView.addJavascriptInterface(new Object() {
                public void clickOnAndroid() {
                    mHandler.post(new Runnable() {
                        public void run() {
                            mWebView.loadUrl("javascript:wave()");
                        }
                    });
                }
            }, "demo");
            mWebView.loadUrl("file:///android_asset/demo.html");
        }
    }
    6.WebView控制进度

    webView.setWebChromeClient(new WebChromeClient() {

                public void onProgressChanged(WebView view, int progress) {

                    setTitle("页面加载中,请稍候..." + progress + "%");

                    setProgress(progress * 100);

                    if (progress == 100) {

                        setTitle(R.string.app_name);

                        progressBar.setVisibility(4);

                    }

                }

            });

    最后把MainActivity的代码贴上
    package com.example.webviewdemo;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.webkit.WebChromeClient;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.ProgressBar;

    public class MainActivity extends Activity {
        WebView webView;
        ProgressBar progressBar;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            webView = (WebView) findViewById(R.id.webView1);
            progressBar = (ProgressBar) findViewById(R.id.progressBar1);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.loadUrl("https://m.empireblue.com/mobile/providerfinder/home");
            webView.setWebViewClient(new WebViewClient() {
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }
            });

            webView.setWebChromeClient(new WebChromeClient() {

                public void onProgressChanged(WebView view, int progress) {

                    setTitle("页面加载中,请稍候..." + progress + "%");

                    setProgress(progress * 100);

                    if (progress == 100) {

                        setTitle(R.string.app_name);
                        progressBar.setVisibility(4);

                    }

                }

            });

        }

        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
                webView.goBack();
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }
        @Override

        public boolean onCreateOptionsMenu(Menu menu) {

            getMenuInflater().inflate(R.menu.main, menu);

            return true;

        }
    }

  • 相关阅读:
    二叉树
    队列
    python3使用pdfminer3k解析pdf文件
    得到手机版新闻解析
    python连接redis并插入url
    Python使用requirements.txt安装类库
    (1366, "Incorrect string value: '\xF3\xB0\x84\xBC</...' for column 'content' at row 1")
    mysql中Incorrect string value乱码问题解决方案
    mysql命令
    requests ip代理池单ip和多ip设置方式
  • 原文地址:https://www.cnblogs.com/tyjsjl/p/3603247.html
Copyright © 2011-2022 走看看