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