android学习总结(五)---简单浏览器demo的实现

一实现的过程

功能需求的定义

结合WebViewAPI,初步确定这个简单浏览器的功能如下:

输入网址,显示跳转页面

页面的前进和回退

页面刷新

停止加载页面

历史记录的显示和清除

书签的添加和显示

保存图片

设置背景颜色

在页面内查找串

10 清除缓存

后来结合实际情况,最后确定浏览器所具有的功能如下:

输入网址,显示跳转页面

页面的前进和回退

页面刷新

历史记录的显示和清除

书签的添加和显示

接下来,一一介绍这些功能是怎样实现的

1输入网址,显示跳转页面

WebView提供了一个很好的接口void loadUrlString url),要使用WebView控件,需要在AndroidManifest.xml中添加如下权限:

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

为了达到更好的效果,我增加了一个ProcessDialog控件,在页面加载过程中显示该控件;

增加一个ButtonEdtiText,用于相应输入和接受输入。

页面的前进和后退

WebView提供了一对接口canGoBack()和goBack以及canGoFoward()和goFoward(),这里必须注意的是一定要重写onKeyDown()函数,否则当按返回键时,就会退出这个浏览器了。

刷新页面

利用WebView的接口reload()即可。

历史记录显示和删除

1历史记录的显示

在介绍这个之前,还要先介绍我写的另一个类ListShower,这个类将ArrayList<HashMap<String,String>>这样一个结构用listView显示出来,并且选中某一项时,将这一项的URL带回来。HashMap用来存放网址的标题和URL。有了这个类,显示历史记录就很简单了,利用WebView 的接口copyBackForwardList(),可活动历史记录的列表,在将它们放于ArrayList<HashMap<String,String>>这样的对象中,最后利用Intent的对象实现两个Activity之间的数据交换和跳转即可。

2历史记录的删除

利用WebView的接口clearHistory()即可。

书签的添加和显示

书签包含网址的标题和URL,这些信息需要保存到本地,而android数据存储在本地的方式有sharePreferenceFile以及SQLite数据库,考虑到数据的操作方便,我选的是将书签的信息保存到SQLite数据库里,这样取得利用WebView提供的接口getTitlegetUrl取得当前页面的标题和URL,再保存到数据库里即可。

书签的显示,先从数据库里拉取所有的数据,保存到ArrayList<HashMap<String,String>>的结构里,利用ListShower将其显示即可。

二遇到的问题

有时候不能显示网页

数据库创建失败

三解决的方法

刚开始的时候默认浏览器不能浏览器网页,后来设置了它的代理服务器和端口号就可以上网了。但利用WebView有时候还是不能上网。为了方便测试,我做了两个本地网页作为测试用,就解决了不能浏览网页的问题。

数据库这块,我创建了一个Bookmark类来管理,这个类的父类是Activity。在Main这个类里有个Bookmark的对象,它在OnCreate时被new出来,但在创建数据库时,放回的值总是空值,原来一个activitynew出来,但它还是处于为被激活状态,必须通过startAtctivity()将它激活。但这这样做的话必须要先停止Main这个activity。后来我想用Bookmark继承至server类,但发现这样数据交换的话,要改事先定义好的接口。最后我的解决方法是将Bookmar继承至Object类,这样只要new出来就可以了,然后再将Mainthis指针传进去,就可以调用SQLite的接口了。

四 还可以完善和改进的地方

1书签的删除

这个需要删除ListView的选中的一项,然后在数据库中也删除这项。

2保存图片

可以选中网页中的图片,保存到本地

3书签重复

要检查当前添加的书签在数据库中是否已经存在。

五 学到的东西

1 Logcat某些日志信息的含义

2 WebView常用接口的使用

浏览器的基本功能

4 ListView的使用

5 WebView常用接口的使用

6 SQLite数据库的简单使用


效果如如下:

android学习总结(五)---简单浏览器demo的实现_第1张图片      android学习总结(五)---简单浏览器demo的实现_第2张图片

资源下载地址:

http://download.csdn.net/detail/shouhuqi/4490081

你可能感兴趣的:(android,数据库,ListView,sqlite,浏览器,HashMap)