Android学习笔记之自制简易浏览器


首先,不要题目吓到——这个简易浏览器真得很简易!我们的任务就是——输入网址,然后显示出对应的页面。但是通过这个简易例子,今天来介绍下一个新的组件:WebView。

表面上来看,这个WebView组件似乎与普通ImageView还差不多,但实际上这个组件的功能要强大得多,WebView本身就是一个浏览器实现(所以说任务很简易嘛...),它的内核基于WebKit引擎(一个开源项目,Android系统自带的浏览器就是基于它实现的)。

功能强大归强大,WebView的用法却一点也不复杂,与普通ImageView的用法基本相似。重要的是,它提供了一系列的方法来执行浏览器操作,下面是几个常用的方法:

  • void goBack():后退
  • void goForward():前进
  • void loadUrl(String url):加载指定URL对应的网页
  • boolean zoomIn():放大网页
  • boolean zoomOut():缩小网页

为了完成今天的这个自制简易浏览器程序,我们首先就需要在布局文件中定义一个WebView组件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/url"
        android:inputType="textUri"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <WebView
        android:id="@+id/show"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
   

</LinearLayout>

然后,就需要在Activity程序中获取EditText文本框中输入的组件,然后在WebView中将对应的网页显示出来:

public class MainActivity extends Activity
{
 private EditText url=null;
 private WebView show=null;
 
 @Override
 protected void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  super.setContentView(R.layout.activity_main);
  this.url=(EditText)super.findViewById(R.id.url);
  this.show=(WebView)super.findViewById(R.id.show);
 }

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event)
 {
  if(keyCode==KeyEvent.KEYCODE_SEARCH)
  {
   String urlStr=this.url.getText().toString();
   //加载并显示url对应的网页
   this.show.loadUrl(urlStr);
   return true;
  }
  return false;
 }
 

}

运行改程序,可能的结果是显示无法打开网页,这时就应该反射性地想到是不是忘了下一步:
 
在AndroidManifest.xml文件中添加权限:

  <uses-permission
        android:name="android.permission.INTERNET" />

到此,一个简易的自制浏览器就完成了......

当然,这个简易浏览器还有许多可以改进的地方,可以增加些使用功能,或是美化下程序界面,然后你就可以使用自制的浏览器代替android系统浏览器了!

相关内容