Android开发学习笔记:浅谈WebView

  • Post author:
  • Post category:其他


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. import

    android.app.Activity;

  3. import

    android.os.Bundle;

  4. import

    android.view.KeyEvent;

  5. import

    android.webkit.WebView;

  6. public


    class

    MainActivity

    extends

    Activity {

  7. private

    WebView webview;

  8. @Override

  9. public


    void

    onCreate(Bundle savedInstanceState) {

  10. super

    .onCreate(savedInstanceState);

  11. //实例化WebView对象
  12. webview =

    new

    WebView(

    this

    );

  13. //设置WebView属性,能够执行Javascript脚本
  14. webview.getSettings().setJavaScriptEnabled(

    true

    );

  15. //加载需要显示的网页
  16. webview.loadUrl(

    “http://www.51cto.com/”

    );

  17. //设置Web视图
  18. setContentView(webview);
  19. }

  20. @Override

  21. //设置回退

  22. //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法

  23. public


    boolean

    onKeyDown(

    int

    keyCode, KeyEvent event) {

  24. if

    ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
  25. webview.goBack();

    //goBack()表示返回WebView的上一页面

  26. return


    true

    ;
  27. }

  28. return


    false

    ;
  29. }






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. import

    android.app.Activity;

  3. import

    android.os.Bundle;

  4. import

    android.view.KeyEvent;

  5. import

    android.webkit.WebView;

  6. import

    android.webkit.WebViewClient;

  7. public


    class

    MainActivity

    extends

    Activity {

  8. private

    WebView webview;

  9. @Override

  10. public


    void

    onCreate(Bundle savedInstanceState) {

  11. super

    .onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. webview = (WebView) findViewById(R.id.webview);

  14. //设置WebView属性,能够执行Javascript脚本
  15. webview.getSettings().setJavaScriptEnabled(

    true

    );

  16. //加载需要显示的网页
  17. webview.loadUrl(

    “http://www.51cto.com/”

    );

  18. //设置Web视图
  19. webview.setWebViewClient(

    new

    HelloWebViewClient ());
  20. }

  21. @Override

  22. //设置回退

  23. //覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法

  24. public


    boolean

    onKeyDown(

    int

    keyCode, KeyEvent event) {

  25. if

    ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
  26. webview.goBack();

    //goBack()表示返回WebView的上一页面

  27. return


    true

    ;
  28. }

  29. return


    false

    ;
  30. }

  31. //Web视图

  32. private


    class

    HelloWebViewClient

    extends

    WebViewClient {

  33. @Override

  34. public


    boolean

    shouldOverrideUrlLoading(WebView view, String url) {
  35. view.loadUrl(url);

  36. return


    true

    ;
  37. }
  38. }
  39. }

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. <


    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


    >

效果图:



转载于:https://blog.51cto.com/liangruijun/647456


关闭菜单