zoukankan      html  css  js  c++  java
  • android webview用法小结1

    将webview里常用的东西拿出来分享下

    想要webview加载页面,只需webView.loadUrl("http://m.baidu.com");当然别忘了添加网络权限

    此时点击网页里的超链接,会弹出多个浏览器选择,但是我们想要在自己的浏览器打开,就需要设置WebViewClient

    [java] view plaincopy
     
    1. webView.setWebViewClient(new WebViewClient(){  
    2. }  

    返回键的处理:我们打开多个网页后,点击返回目的是返回上一个网页,但是事实上会关闭当前activity,于是要对返回键做处理

    [java] view plaincopy
     
    1. @Override  
    2.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
    3.         if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {  
    4.             webView.goBack();  
    5.             return true;  
    6.         } else  
    7.             return super.onKeyDown(keyCode, event);  
    8.     }  

    这里说一下 return true和return false的区别

    返回true的时候表示事件已经完整的执行完毕了,不再执行其他的回调函数,返回false表示并未完全处理完该事件还会继续调用其他回调函数

    刚才讲的是后退,那怎样前进呢?

    在前进按钮点击的时候执行

    [java] view plaincopy
     
    1. if(webView.canGoForward()){  
    2.                 webView.goForward();  
    3.             }else{  
    4.                 Toast("已经是最后一页了,不能再前进了");  
    5.             }  

    在刷新按钮点击的时候执行

     

    [java] view plaincopy
     
    1. webView.reload();  

    在页面加载的时候我们可能需要给用户个友好的提示,也是在webViewClient()里做


    [java] view plaincopy
     
    1. webView.setWebViewClient(new WebViewClient(){  
    2.   
    3. @Override  
    4.             public void onPageStarted(WebView view, String url, Bitmap favicon) {  
    5.                 if(progDlg == null || !progDlg.isShowing()){  
    6.                     progDlg = new ProgressDialog(ctx);  
    7.                     progDlg.setMessage("正在加载,请稍候。。。");  
    8.                 }  
    9.                 progDlg.show();  
    10.             }  
    11.   
    12.             @Override  
    13.             public void onPageFinished(WebView view, String url) {  
    14.                 progDlg.dismiss();  
    15.             }  
    16. }  

    在页面加载时想要知道加载进度,需要用到另一个类WebChromeClient

    [java] view plaincopy
     
    1. webView.setWebChromeClient(new WebChromeClient(){  
    2.   
    3.             @Override  
    4.             public void onProgressChanged(WebView view, int newProgress) {  
    5.                 Message msg = new Message();  
    6.                                 msg.what = 200;  
    7.                                 msg.obj = newProgress;  
    8.                                 handler.sendMessage(msg);  
    9.             }  
    10. }  

    在handler里更新进度条

    [java] view plaincopy
     
    1. private Handler handler = new Handler(){  
    2.         public void handleMessage(android.os.Message msg) {  
    3.             switch (msg.what) {  
    4.             case 200:  
    5.                 int progress = (Integer) msg.obj;  
    6.                 progressBar.setProgress(progress);  
    7.                 break;  
    8.   
    9.             default:  
    10.                 break;  
    11.             }  
    12.         };  
    13.     };  

    等加载完后再让progressbar消失

    效果图

  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    block的是发送信号的线程,又不是处理槽函数的线程
  • 原文地址:https://www.cnblogs.com/tfy1332/p/3654312.html
Copyright © 2011-2022 走看看