zoukankan      html  css  js  c++  java
  • Android开发:关于WebView

     
    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://liangruijun.blog.51cto.com/3061169/647456

        WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法:

    第一种方法的步骤:

    1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);

    2.调用WebView的loadUrl()方法,设置WevView要显示的网页:   互联网用:webView.loadUrl("http://www.google.com");    本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中

    3.调用Activity的setContentView)方法来显示网页视图

    4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面

    5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。   <uses-permission android:name="android.permission.INTERNET" />

    下面是具体例子:

    MainActivity.java

    1. package com.android.webview.activity;  
    2.  
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5. import android.view.KeyEvent;  
    6. import android.webkit.WebView;  
    7.  
    8. public class MainActivity extends Activity {  
    9.     private WebView webview;  
    10.     @Override 
    11.     public void onCreate(Bundle savedInstanceState) {  
    12.         super.onCreate(savedInstanceState);  
    13.         //实例化WebView对象  
    14.         webview = new WebView(this);  
    15.         //设置WebView属性,能够执行Javascript脚本  
    16.         webview.getSettings().setJavaScriptEnabled(true);  
    17.         //加载需要显示的网页  
    18.         webview.loadUrl("http://www.51cto.com/");  
    19.         //设置Web视图  
    20.         setContentView(webview);  
    21.     }  
    22.       
    23.     @Override 
    24.     //设置回退  
    25.     //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法  
    26.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
    27.         if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {  
    28.             webview.goBack(); //goBack()表示返回WebView的上一页面  
    29.             return true;  
    30.         }  
    31.         return false;  

    在AndroidManifest.xml文件中的17行添加权限

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    3. package="com.android.webview.activity"
    4. android:versionCode="1"
    5. android:versionName="1.0">
    6. <uses-sdk android:minSdkVersion="10" />
    7. <application android:icon="@drawable/icon" android:label="@string/app_name">
    8. <activity android:name=".MainActivity"
    9. android:label="@string/app_name">
    10. <intent-filter>
    11. <action android:name="android.intent.action.MAIN" />
    12. <category android:name="android.intent.category.LAUNCHER" />
    13. </intent-filter>
    14. </activity>
    15. </application>
    16. <uses-permission android:name="android.permission.INTERNET"/>
    17. </manifest>

    效果图:

    第二种方法的步骤:

    1、在布局文件中声明WebView

    2、在Activity中实例化WebView

    3、调用WebView的loadUrl( )方法,设置WevView要显示的网页

    4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置  WebView视图

    5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面

    6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。

    <uses-permission android:name="android.permission.INTERNET"/>

     下面是具体的例子:

    MainActivity.java

    1. package com.android.webview.activity;  
    2.  
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5. import android.view.KeyEvent;  
    6. import android.webkit.WebView;  
    7. import android.webkit.WebViewClient;  
    8.  
    9. public class MainActivity extends Activity {  
    10.     private WebView webview;  
    11.     @Override 
    12.     public void onCreate(Bundle savedInstanceState) {  
    13.         super.onCreate(savedInstanceState);  
    14.         setContentView(R.layout.main);  
    15.         webview = (WebView) findViewById(R.id.webview);  
    16.         //设置WebView属性,能够执行Javascript脚本  
    17.         webview.getSettings().setJavaScriptEnabled(true);  
    18.         //加载需要显示的网页  
    19.         webview.loadUrl("http://www.51cto.com/");  
    20.         //设置Web视图  
    21.         webview.setWebViewClient(new HelloWebViewClient ());  
    22.     }  
    23.       
    24.     @Override 
    25.     //设置回退  
    26.     //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法  
    27.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
    28.         if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {  
    29.             webview.goBack(); //goBack()表示返回WebView的上一页面  
    30.             return true;  
    31.         }  
    32.         return false;  
    33.     }  
    34.       
    35.     //Web视图  
    36.     private class HelloWebViewClient extends WebViewClient {  
    37.         @Override 
    38.         public boolean shouldOverrideUrlLoading(WebView view, String url) {  
    39.             view.loadUrl(url);  
    40.             return true;  
    41.         }  
    42.     }  

    main.xml

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    3.     android:orientation="vertical" 
    4.     android:layout_width="fill_parent" 
    5.     android:layout_height="fill_parent" 
    6.     >    
    7.     <WebView   
    8.         android:id="@+id/webview" 
    9.         android:layout_width="fill_parent" 
    10.         android:layout_height="fill_parent" 
    11.         /> 
    12. </LinearLayout

    在AndroidManifest.xml文件中的17行添加权限

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    3.       package="com.android.webview.activity" 
    4.       android:versionCode="1" 
    5.       android:versionName="1.0"
    6.     <uses-sdk android:minSdkVersion="10" /> 
    7.  
    8.     <application android:icon="@drawable/icon" android:label="@string/app_name"
    9.         <activity android:name=".MainActivity" 
    10.                   android:label="@string/app_name"
    11.             <intent-filter
    12.                 <action android:name="android.intent.action.MAIN" /> 
    13.                 <category android:name="android.intent.category.LAUNCHER" /> 
    14.             </intent-filter
    15.         </activity
    16.     </application
    17.     <uses-permission android:name="android.permission.INTERNET"/> 
    18. </manifest

    效果图:

    本文出自 “IT的点点滴滴” 博客,请务必保留此出处http://liangruijun.blog.51cto.com/3061169/647456

  • 相关阅读:
    在SQLite中使用索引优化查询速度
    SQLite支持的SQL数据操作
    left (outer) join , right (outer) join, full (outer) join, (inner) join, cross join 区别
    深入理解Android内存管理原理(六)
    Merge Sorted Array
    Sort Colors
    Construct Binary Tree from Preorder and Inorder Traversal
    Binary Tree Postorder Traversal
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/lianzhibin/p/6151990.html
Copyright © 2011-2022 走看看