首页 > 代码库 > Android在程序中浏览网页

Android在程序中浏览网页

       本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 

       有时需要在程序中浏览一些网页,当然了可以通过调用系统的浏览器来打开浏览,但是大多数情况下,这种方式并不适用。

   下面给出如何在程序中浏览网页,先看效果图:


          其实,这里主要是利用了WebView控件及它的一些方法。

    通过WebView的loadUrl(String url)可以装载指定的地址的网页内容,并显示在控件中,上一页和下一页的功能分别对应于WebView的goBack()和goForward()方法;

  布局文件:main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="@drawable/white"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >  
  	<EditText
  		android:id="@+id/myEditText" 
  		android:layout_width="230dp"
  		android:layout_height="wrap_content"
  		android:layout_margin="10dp"
  		/>
  	<Button
  		android:id="@+id/bt_go"
  		android:layout_width="wrap_content"
 		android:layout_height="wrap_content"
  		android:text="转到"
  		android:layout_toRightOf="@id/myEditText"
  		android:layout_margin="10dp"
  		/>
  	
  	<WebView
      android:id="@+id/myWebView"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:background="@drawable/black"
      android:focusable="false" 
      android:layout_below="@id/bt_go"
      android:layout_margin="10dp"
      />
  	<LinearLayout 
  	    android:layout_width="wrap_content"
  	    android:layout_height="wrap_content"
  	    android:layout_alignParentBottom="true"
  	    android:layout_centerHorizontal="true"
  	    >
  	    <Button 
  	        android:id="@+id/bt_previous"
  	        android:layout_width="wrap_content"
  	        android:layout_height="wrap_content"
  	        android:text="上一页"
  	        />
  	    <Button 
  	        android:id="@+id/bt_next"
  	        android:layout_width="wrap_content"
  	        android:layout_height="wrap_content"
  	        android:text="下一页"
  	        />
  	    
  	</LinearLayout>
 
</RelativeLayout>

       主要代码:WebViewTest

public class WebViewTest extends Activity 
{
  
  private Button go;
  private EditText mEditText1;
  private WebView mWebView1;  
  private Button bt_next,bt_previous;
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {    
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   
    go = (Button)findViewById(R.id.bt_go);
    bt_next = (Button)findViewById(R.id.bt_next);
    bt_previous = (Button)findViewById(R.id.bt_previous);
    go.setOnClickListener(new ClickEvent());
    bt_next.setOnClickListener(new ClickEvent());
    bt_previous.setOnClickListener(new ClickEvent());
    
    mEditText1 = (EditText)findViewById(R.id.myEditText);
    mEditText1.setText("http://www.baidu.com");
    mWebView1 = (WebView) findViewById(R.id.myWebView);
    
    mWebView1.setWebViewClient(new WebViewClient() 
    {
      
      @Override
      public void onPageFinished(WebView view, String url)
      {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);
        //mEditText1.setText(url);
        Toast.makeText(WebViewTest.this, "加载完毕", Toast.LENGTH_SHORT).show();
      }
         
    });
    
  }
  class ClickEvent implements OnClickListener{

    @Override
    public void onClick(View v)
    {
      switch(v.getId()){
        case R.id.bt_go :
          /*设定抓取EditText里面的内容*/
          String strURI = (mEditText1.getText().toString()); 
          /*?WebView里面显示网页数据*/
          mWebView1.loadUrl(strURI);
          Toast.makeText(WebViewTest.this,"正在加载"+strURI,Toast.LENGTH_LONG).show();         
          break;
        case R.id.bt_next:
          mWebView1.goForward();
          //System.out.println(mWebView1.getUrl());
          break;
        case R.id.bt_previous:
          mWebView1.goBack();
          break;
      }
      
    }
  }
}
 

 代码中onPageFinished,可以从字面来理解就是当网页加载完毕时触发,但是指网页的框架加载结束,有可能图片并未加载结束。

   最后,不要忘了加访问网络的权限:

 <uses-permission android:name="android.permission.INTERNET"> 
   至此,就可以在程序中浏览网页了,你可以在EditText输入相应的网址,从而浏览各种网页,也可以通过上一页和下一页实现网页的前进和后退功能,其实就是一个简易版的浏览器。



Android在程序中浏览网页