zoukankan      html  css  js  c++  java
  • webView用法小结


    1、加入权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。
    2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this);
    3、设置WebView基本信息:
    假设訪问的页面中有Javascript,则webview必须设置支持Javascript。
    webview.getSettings().setJavaScriptEnabled(true); 
    触摸焦点起作用
    requestFocus();
    取消滚动栏
    this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
    4、设置WevView要显示的网页:
    互联网用:webView.loadUrl("http://www.google.com"); 
    本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets文件里
    5、假设希望点击链接由自己处理。而不是新开Android的系统browser中响应该链接。
    给WebView加入一个事件监听对象(WebViewClient) 
    并重写当中的一些方法
    shouldOverrideUrlLoading:对网页中超链接button的响应。
    当按下某个连接时WebViewClient会调用这种方法,并传递參数:按下的url 
    onLoadResource 
    onPageStart 
    onPageFinish 
    onReceiveError
    onReceivedHttpAuthRequest
    6、假设用webview点链接看了非常多页以后。假设不做不论什么处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身。假设希望浏览的网页回退而不是退出浏览器,须要在当前Activity中处理并消费掉该Back事件。
    覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。
    [java] view plaincopyprint?
    public boolean onKeyDown(int keyCoder,KeyEvent event){
    if(webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){
    webview.goBack(); //goBack()表示返回webView的上一页面
    return true;
    }
    return false;

    8、webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

    9、
    * 通过WebSettings设置WebView的一些属性、状态。通过webView.getSettings获得
     比如:setAllowFileAccess(能否訪问文件数据) 
      setBuiltInZoomControls(设置是否支持缩放)、
      setCacheMode(设置缓冲的模式)
      setJavaScriptEnabled(设置是否支持JavaScript)........


    * 通过WebViewClient来自己定义网页浏览程序。

    专门辅助WebView处理各种通知、请求等事件的类。

         通过webView.setWebChromeClient获得
     方法:
      doUpdateVisitedHistory (更新历史记录)
      onFormResubmission(应用程序又一次请求网页数据)
      onLoadResource(载入指定地址提供的资源)
      onPageFinished(网页载入完成)
      onPageStarted(网页開始载入)
      onReceivedError(报告错误信息)
      onScaleChanged(WebView发生改变)
      shouldOverrideUrlLoading(控制新的连接在当前WebView中打开)


    * WebChromeClient专门用来辅助WebView处理JavaScript的对话框、图标、站点标题、载入进度等。
     方法:onCloseWindow(关闭WebView)
      onCreateWindow(创建WebView)
      onJsAlert(处理Js中的Alert对话框)、onJsConfirm(处理Js中的Confirm对话框)、onJsPrompt(处理JS中的Prompt对话框)
      onProgressChanged(载入进度条改变)
      onReceivedIcon(网页图标更改)
      onReceivedTitle(网页标题更改)
      onRequestFocus(WebView显示焦距)


    package com.dan;


    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.graphics.Bitmap;
    import android.os.Bundle;
    import android.view.View;
    import android.view.Window;
    import android.webkit.JsPromptResult;
    import android.webkit.JsResult;
    import android.webkit.URLUtil;
    import android.webkit.WebChromeClient;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Button;
    import android.widget.EditText;


    public class WebActivity extends Activity {


     private WebView webView;
     private EditText urlEdt;
     private Button btn;
     
     @Override
     public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.web);
      
      urlEdt = (EditText)findViewById(R.id.edt_1);
      btn = (Button)findViewById(R.id.btn_1);
      
      webView = (WebView)findViewById(R.id.web);
      WebSettings settings = webView.getSettings();
      //webView.loadUrl("http://10.0.2.2/affiliate/code/login.php");
      //设置支持Js脚本
      settings.setJavaScriptEnabled(true);
      //设置能够訪问文件
      settings.setAllowFileAccess(true);
      //支持缩放
      settings.setBuiltInZoomControls(true);
      //设置WebViewClient
      webView.setWebViewClient(new WebViewClient(){
       @Override
       public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
       }


       @Override
       public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
       }


       @Override
       public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
       }
       
      });
      //设置WebChromeClient
      webView.setWebChromeClient(new WebChromeClient(){


       @Override
       public boolean onJsAlert(WebView view, String url, String message,
         JsResult result) {
        AlertDialog.Builder alert = new AlertDialog.Builder(WebActivity.this);
        alert.setTitle("提示对话框");
        alert.setMessage(message).setPositiveButton("确定", new OnClickListener() {
         public void onClick(DialogInterface dialog, int which) {
         }
        });
        alert.create().show();
        return true;
       }


       @Override
       public boolean onJsConfirm(WebView view, String url,
         String message, JsResult result) {
        return super.onJsConfirm(view, url, message, result);
       }


       @Override
       public boolean onJsPrompt(WebView view, String url, String message,
         String defaultValue, JsPromptResult result) {
        return super.onJsPrompt(view, url, message, defaultValue, result);
       }


       @Override
       public void onProgressChanged(WebView view, int newProgress) {
        WebActivity.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress*100);
        super.onProgressChanged(view, newProgress);
       }


       @Override
       public void onReceivedTitle(WebView view, String title) {
        WebActivity.this.setTitle("中国世贸通加盟管理登录页");
        super.onReceivedTitle(view, title);
       }
       
      });
      
      btn.setOnClickListener(new Button.OnClickListener(){
       public void onClick(View v) {
        String url = urlEdt.getText().toString();
        if( URLUtil.isNetworkUrl(url) ){
         webView.loadUrl(url);
        }else{
         urlEdt.setHint("输入的网址错误,请又一次输入");
        }
        
       }
      });
      
     }


    }
    * 后退 和 前进  canGoBack 与canGoForward
    //后退
    if( (keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack() ){
     webView.goBack();
     return true;
    }


    将Html代码通过String的形式被载入到WebView中,并且在Html中能够引用存储在设备中的图片资源等。这个方式能够很方便的实现RichTextField的效果,尤其是对某些程序提供一些本地的简单文档时,很方便。


    下边是实现这个功能的源码:


    public void loadHTML() {        final String mimeType = "text/html";        final String encoding = "utf-8";        final String html = "<h1>Header</h1><p>Custom HTML</p>                          <p><img src="file:///android_asset/image1.jpg" />                          </p>";        WebView wv = (WebView) findViewById(R.id.wv1);        wv.loadDataWithBaseURL("fake://not/needed", html,                            mimeType, encoding, "");    }   //wView.loadUrl("file:///android_asset/index.html");   -----打开本包内asset文件夹下的index.html文件  //wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html"); -----打开本地sd卡内的index.html文件 //wView.loadUrl("http://wap.baidu.com"); -----打开指定URL的html文件 ......
    webView.setInitialScale(30); //这个就是重点。你能够在这里依据需求来设置缩放比例

  • 相关阅读:
    New-SAN-FENG-YUN-三
    San丰-Cloud
    SpringBoot+MySQL+MyBatis+Shiro+AdminLTE
    SanFeng-Clound
    SanFengClound
    传奇音乐设置
    热血传奇GOM引擎问题集锦
    app测试
    接口测试
    题目
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5066277.html
Copyright © 2011-2022 走看看