• 如何创建WebView




        1、添加权限:AndroidManifest.xml中必须使用权限:"android.permission.INTERNET",否则会出Web page not available错误。 

        2、创建WebView实例:WebView webView = new WebView(this); 

        3、WebView基本设置: 
              webview.getSettings().setJavaScriptEnabled(true);   //设置支持Javascript 
              webView.getSettings().setBuiltInZoomControls(true);   //页面添加缩放按钮 
              webView.requestFocus();   //触摸焦点起作用.如果不设置,则在点击网页文本输入框时,不能弹出软键盘及不响应其他的一些事件。 
              webView.setScrollBarStyle(WebView.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:对网页中超链接按钮的响应。 
                                              当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url 
                    onLoadResource   
                    onPageStart  
                    onPageFinish  
                    onReceiveError 
                    onReceivedHttpAuthRequest 

        6、如果用webview点链接跳转多页后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。 
           覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。
    Java代码  收藏代码
    1. public boolean onKeyDown(int keyCoder,KeyEvent event) {    
    2.     if ( webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK ) {    
    3.         webView.goBack();   //返回webView的上一页面    
    4.         return true;    
    5.     }    
    6.     return false;    
    7. }    


    WebView相关问题注意: 

    Android的webView很强大,其实就是一个浏览器,你可以把它嵌入到你想要的位置,我这里遇到两个问题,一是怎么知道网页的加载进度,二是加载网页时,点击网页里面的链接还是在当前的webview里跳转,不想跳到浏览器那边。解决办法如下:
    Java代码  收藏代码
    1. webView.setWebChromeClient(new WebChromeClient() {    
    2.     public void onProgressChanged(WebView view, int progress) {    
    3.         setTitle("页面加载中 ... " + progress + "%");    
    4.         setProgress(progress * 100);    
    5.         if (progress == 100) {    
    6.             setTitle(R.string.app_name);    
    7.         }    
    8.     }    
    9. });    
    10.   
    11. webView.setWebViewClient(new WebViewClient() {    
    12.     @Override  
    13.     public boolean shouldOverrideUrlLoading(WebView view, String url) {  
    14.         //设置点击网页里面的链接还是在当前的webview里跳转  
    15.         view.loadUrl(url);    
    16.         return true;    
    17.     }    
    18.     @Override  
    19.     public void onReceivedSslError(WebView view,   
    20.             SslErrorHandler handler, android.net.http.SslError error) {   
    21.         //设置webview处理https请求  
    22.         handler.proceed();  
    23.     }  
    24.     public void onReceivedError(WebView view,  
    25.             int errorCode, String description, String failingUrl) {  
    26.         //加载页面报错时的处理  
    27.         Toast.makeText(MainActivity.this,   
    28.                 "Oh no! " + description, Toast.LENGTH_SHORT).show();  
    29.     }  
    30. });    
     
  • 相关阅读:
    Docs-.NET-C#-指南-语言参考-预处理器指令:#error(C# 参考)
    Docs-.NET-C#-指南-语言参考-预处理器指令:#warning(C# 参考)
    Docs-.NET-C#-指南-语言参考-预处理器指令:#undef(C# 参考)
    Docs-.NET-C#-指南-语言参考-预处理器指令:#define(C# 参考)
    Docs-.NET-C#-指南-语言参考-预处理器指令:#endif(C# 参考)
    Docs-.NET-C#-指南-语言参考-预处理器指令:#elif(C# 参考)
    Docs-.NET-C#-指南-语言参考-预处理器指令:#else(C# 参考)
    Docs-.NET-C#-指南-语言参考-预处理器指令:#if 预处理指令
    Docs-.NET-C#-指南-语言参考-预处理器指令:C# 预处理器指令
    1212 最大公约数
  • 原文地址:https://www.cnblogs.com/tonglingqijie/p/4741985.html
Copyright © 2020-2023  润新知