zoukankan      html  css  js  c++  java
  • 《安卓网络编程》之第五篇 WebView的使用

      Android提供了WebView组件,,在Android的所有组件中,WebView的功能是最强大的,是当之无愧的老大。WebView组件本身就是一个浏览器实现,她的内核是基于开源WebKit引擎。

     main.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="fill_parent"
     4     android:layout_height="fill_parent"
     5     android:background="@drawable/white"
     6     android:orientation="vertical" >
     7     
     8    <LinearLayout
     9     android:orientation="horizontal"
    10     android:background="@drawable/white"
    11     android:layout_width="fill_parent"
    12     android:layout_height="wrap_content">
    13           <EditText
    14           android:id="@+id/myEditText1" 
    15           android:layout_width="0dp"
    16           android:layout_weight="1"
    17           android:layout_height="wrap_content"
    18           android:textSize="18sp"
    19           android:hint="输入网址" />
    20           <!-- 建立一个ImageButton -->
    21           <ImageButton
    22           android:id="@+id/myImageButton1"
    23           android:layout_width="wrap_content"
    24           android:layout_marginTop="6dp"
    25           android:layout_height="wrap_content"
    26           android:background="@drawable/white"
    27           android:src="@drawable/go"
    28           />
    29  </LinearLayout>
    30   <!-- 建立一个WebView -->
    31   <WebView 
    32   android:id="@+id/myWebView1" 
    33   android:layout_height="fill_parent" 
    34   android:layout_width="fill_parent" 
    35   android:background="@drawable/black" 
    36   android:focusable="false"
    37   /> 
    38 </LinearLayout>

    主程序:

     1 package irdc.wang;
     2 import android.app.Activity;
     3 import android.os.Bundle;
     4 import android.view.KeyEvent;
     5 import android.view.View;
     6 import android.webkit.WebView;
     7 import android.webkit.WebViewClient;
     8 import android.widget.EditText;
     9 import android.widget.ImageButton;
    10 import android.widget.Toast;
    11 
    12 public class wang extends Activity
    13 {
    14 
    15   private ImageButton mImageButton1;
    16   private EditText mEditText1;
    17   private WebView mWebView1;
    18   private String str;
    19 
    20   /** Called when the activity is first created. */
    21   @Override
    22   public void onCreate(Bundle savedInstanceState)
    23   {
    24     super.onCreate(savedInstanceState);
    25     setContentView(R.layout.main);
    26 
    27     mImageButton1 = (ImageButton) findViewById(R.id.myImageButton1);
    28     mEditText1 = (EditText) findViewById(R.id.myEditText1);
    29     mWebView1 = (WebView) findViewById(R.id.myWebView1);
    30     
    31     mWebView1.getSettings().setJavaScriptEnabled(true);//使浏览器支持JavaScript
    32     
    33     mWebView1.setWebViewClient(new WebViewClient() {
    34       public boolean shouldOverrideUrlLoading(WebView view,String url) {
    35         view.loadUrl(url);
    36         return true;     
    37       }
    38     });//点击链接在当前Browser中响应
    39     
    40     mImageButton1.setOnClickListener(new ImageButton.OnClickListener()
    41     {
    42       @Override
    43       public void onClick(View arg0)
    44       {
    45         {
    46           mImageButton1.setImageResource(R.drawable.go_2);
    47           str = mEditText1.getText().toString();
    48           if(str.indexOf("http:\\")<0) {
    49             str = "http:\\"+str;
    50           }
    51           String strURI = str;
    52           mWebView1.loadUrl(strURI);
    53           Toast.makeText(wang.this, getString(R.string.load) + strURI,
    54               Toast.LENGTH_LONG).show();
    55         }
    56       }
    57     });
    58     
    59   }
    60 
    61   @Override
    62   public boolean onKeyDown(int keyCode, KeyEvent event)
    63   {
    64     if((keyCode == KeyEvent.KEYCODE_BACK) && mWebView1.canGoBack()) {
    65       mWebView1.goBack();
    66       return true;      
    67     }
    68     if((keyCode == KeyEvent.KEYCODE_MENU) && mWebView1.canGoForward()) {
    69       mWebView1.goForward();
    70       return true;      
    71     }
    72     return super.onKeyDown(keyCode, event);
    73   }
    74    
    75 }

    浏览器支持前进(menu按钮),回退功能(back),效果如下图:

    使用WebView的注意事项

    在开发过程中应该注意几点: 
        1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。
        2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
            webview.getSettings().setJavaScriptEnabled(true);  
        3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。

    1 mWebView.setWebViewClient(new WebViewClient(){       
    2                     public boolean shouldOverrideUrlLoading(WebView view, String url) {       
    3                         view.loadUrl(url);       
    4                         return true;       
    5                     }       
    6         });  

    4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。

    1 public boolean onKeyDown(int keyCode, KeyEvent event) {       
    2         if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {       
    3             mWebView.goBack();       
    4                    return true;       
    5         }       
    6         return super.onKeyDown(keyCode, event);       
    7     }     

     源码传送门

  • 相关阅读:
    NLP概览(一)
    java正则表达式实例
    notepad++
    Mybatis点滴
    (转)GNU Make学习总结(二)
    (转)GNU Make学习总结(一)
    分页查询
    第三方插件
    单例模式读取数据库配置文件和JNDI连接数据源
    过滤器与监听器
  • 原文地址:https://www.cnblogs.com/hixin/p/4366220.html
Copyright © 2011-2022 走看看