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权限,否则无法打开网页。

运行效果。

更多相关文章

  1. 无法安装ADT(无法访问https://dl-ssl.google.com/android/eclipse
  2. Android(安卓)Studio修改apk打包生成名称
  3. androidの布局控件居于最底部实现
  4. Android日常小问题收集库
  5. Android有进度条的下载图片并且显示图片
  6. Android相关sdk使用
  7. Ubuntu 下创建启动器
  8. Android(安卓)-- 解决Android(安卓)Studio 和 Android(安卓)SDK
  9. android复合控件

随机推荐

  1. android 按比例缩放图片(适屏)
  2. 【android】说说GestureDetector.OnGestu
  3. android notification和notificationmana
  4. android 文字或者图片生成.pdf文件
  5. android 接收锁屏广播
  6. android panic堆栈分析工具panic.py
  7. Android(安卓)二级动画弹出菜单
  8. android 视频播放器
  9. android file 记录
  10. android关于网络