Android网页浏览器的核心Widget是包含了WebKit的WebView。

首先,布局文件activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="40dp"        android:gravity="center" >        <Button            android:id="@+id/btnEar"            android:layout_width="wrap_content"            android:layout_height="fill_parent"            android:layout_weight="1"            android:text="<<" />        <Button            android:id="@+id/btnPre"            android:layout_width="wrap_content"            android:layout_height="fill_parent"            android:layout_weight="1"            android:text="<" />        <Button            android:id="@+id/btnNext"            android:layout_width="wrap_content"            android:layout_height="fill_parent"            android:layout_weight="1"            android:text=">" />        <Button            android:id="@+id/btnLast"            android:layout_width="wrap_content"            android:layout_height="fill_parent"            android:layout_weight="1"            android:text=">>" />    </LinearLayout>    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="40dp" >        <EditText            android:id="@+id/edtUrl"            android:layout_width="wrap_content"            android:layout_height="fill_parent"            android:layout_weight="5"            android:ems="10"            android:singleLine="true" >            <requestFocus />        </EditText>        <Button            android:id="@+id/btnGo"            android:layout_width="wrap_content"            android:layout_height="fill_parent"            android:text="GO" />    </LinearLayout>    <WebView        android:id="@+id/webMain"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_weight="1" /></LinearLayout>

布局文件相对简单,包含了几个Button,一个EditText,一个WebView。

Java文件MainActivity.java:

package com.hzhi.mybrowser;import android.os.Bundle;import android.app.Activity;import android.graphics.Bitmap;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import android.widget.EditText;public class MainActivity extends Activity implements OnClickListener{// 控件Button btnEar;Button btnPre;Button btnNext;Button btnLast;EditText edtUrl;Button btnGo;WebView webMain;// URLString strUrl;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获得控件getCon();webMain.setWebViewClient(new MyWebViewClient());}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}// 获得控件public void getCon(){btnEar = (Button) findViewById(R.id.btnEar);btnPre = (Button) findViewById(R.id.btnPre);btnNext = (Button) findViewById(R.id.btnNext);btnLast = (Button) findViewById(R.id.btnLast);edtUrl = (EditText) findViewById(R.id.edtUrl);btnGo = (Button) findViewById(R.id.btnGo);webMain = (WebView) findViewById(R.id.webMain);btnEar.setOnClickListener(this);btnPre.setOnClickListener(this);btnNext.setOnClickListener(this);btnLast.setOnClickListener(this);edtUrl.setOnClickListener(this);btnGo.setOnClickListener(this);// 设置JavaScript可用webMain.getSettings().setJavaScriptEnabled(true);webMain.setScrollBarStyle(View.SCROLLBAR_POSITION_DEFAULT);}@Overridepublic void onClick(View v) {if (v==btnEar){if (webMain.canGoBackOrForward(-2)){webMain.goBackOrForward(-2);}}else if (v==btnPre){if (webMain.canGoBack()){webMain.goBack();}}else if (v==btnNext){if (webMain.canGoForward()){webMain.goForward();}}else if (v==btnLast){if (webMain.canGoBackOrForward(2)){webMain.goBackOrForward(2);}}else if (v==edtUrl){}// 下载网页else if (v==btnGo){strUrl = edtUrl.getText().toString();webMain.loadUrl("http://" + strUrl);}}// WebViewClient的处理类class MyWebViewClient extends WebViewClient {@Overridepublic void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {btnPre.setEnabled(webMain.canGoBack());btnNext.setEnabled(webMain.canGoForward());}@Overridepublic void onPageFinished(WebView view, String url) {if (webMain.getTitle() != null) {MainActivity.this.setTitle(webMain.getTitle());}}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {MainActivity.this.setTitle(url);edtUrl.setText(url);btnPre.setEnabled(webMain.canGoBack());btnNext.setEnabled(webMain.canGoForward());}}}

Java文件主要是对WebView控件的操作。其中MyWebViewClient继承自WebViewClient,有更新网页访问历史(onUpdateVisitedHistory)、网页结束(onPageFinished)、网页开始(onPageStarted)等几个函数。

WebView.setWebViewClient(new MyWebViewClient())表示new一个MyWebViewClient实例作为浏览器,如果没有这行代码,会以Android系统已安装的浏览器浏览网页。

单击GO按钮时,使用loadUrl函数访问网页。

最后,在Manifest文件里面加上访问网络的android.permission.INTERNET权限,否则无法打开网页。

运行效果。

Android网页浏览器的开发

更多相关文章

  1. android复合控件
  2. Android 自定义控件打造史上最简单的侧滑菜单
  3. android的map上的浮动菜单以及日历控件
  4. android:shape的使用 (android用xml文件生成图像控件)
  5. 【自定义控件】 ------- GridView
  6. Android 浏览网页
  7. android 自定义View 在布局文件中写法
  8. Android上传下载文件(图片)
  9. android:Spinner(下拉框)控件的使用

随机推荐

  1. Android里关于EventBus的使用
  2. Android中SparseArray和ArrayMap的使用
  3. android错误分析集锦
  4. Android(安卓)RelativeLayout 属性
  5. Android的生命周期
  6. 玩转Android---UI篇---TextView(文本框)
  7. Android(安卓)布局之DrawLayout
  8. Android(安卓)AsyncTask 使用
  9. Android(安卓)android下的数据持久化和读
  10. Android应用程序请求SurfaceFlinger服务