初学android的第一个习做

首发:我的博客,更新&纠错&回复html

项目源码在这里,由于github上传速度太差,传到了oschina的git托管上。java


1.项目结构及技术点jquery

主页面
使用FragmentTabHost,5个标签各对应一个fragment,一个fragment便是一个具体的标签页。如“博客”标签对应的标签页为BlogFragment。android

博客标签页
技术点:ListView的使用
技术点:经过Intent启动一个Activity
技术点:使用httpClient和JSON包访问rest api
博客显示页
技术点:使用webview展现网页,网页的html是编程指定的字符串git

收藏标签页
收藏显示页
技术点:使用webview展现页面,指定网页的url来加载程序员

书单标签页github

便签标签页
技术点:本地数据库的查改操做
技术点:ListView的自定义adapter
技术点:相对布局
便签表单页
技术点:本地数据库的增删操做
技术点:系统服务的调用web

管理标签页
技术点:登陆页使用本地配置文件保存用户名密码
技术点:登陆页的表格布局
收藏管理列表页
技术点:访问rest api的删除操做
收藏管理表单页
技术点:访问rest api的增改操做ajax


2.关于技术点的体会数据库

布局文件是与调用者无关的一个单纯的xml文件,表明一个控件树,相似写在<script type="text/plain">标签中的html片断,只是一段静态文本,被动地等待被调用。调用者会根据这段xml文本中声明的树状结构,在程序中生成控件对象树,控件对象树才是与用户打交道的。
布局方式最经常使用的是线性布局,能够跨屏幕分辨率良好显示,纵向线性布局嵌套横向嵌套布局,则很像网页的div布局,先从上到下,再从左到右。表格布局很像网页中的table布局,确保同列元素的对齐。相对布局对应的就是网页中脱离文档流的元素,与之不一样的是它能够要求控件相对一个兄弟节点。

FragmentTabHost实现的标签页效果做为主页面,其各个标签页都是Fragment,在标签页中进行操做显示的新页面,则是Activity。新页面操做完后在代码中关闭,或者在新页面时用户点击后退,都会让该新页面出栈,返回到上一个页面,若是关闭的页面是表单页,其上一个页面是列表页,则列表页须要在从新显示的时候刷新数据,使用Activity生命周期中的方法。
使用ListView显示列表页,可使用原始的Adapter,每行显示一段字符串,若是要显示更丰富的信息,须要自定义Adapter和自定义行内布局样式,Adapter使用实体类名做为布局参数,在响应函数里方便地使用下标得到实体作想作的一切。
使用WebView显示网页,能够本身指定网页内容字符串,或者指定一个url让WebView直接加载,前者就像xxDiv.innerHTML="xx",后者则像xxIFrame.src="xx"。相比之下,前者比后者更细腻一点,能够编程决定字符串的内容。固然,能想到的最细腻的方式,是使用Jsoup库控制dom节点,最后产生html字符串给WebView加载。

本地数据,除了最暴力的文件读写外,本地配置文件和本地数据库是可用的选择。前者适合存储一些相似全局变量的数据,可是是持久化的(非持久化的存在public static就行了,例如登陆时的token,也能够存在全局上下文里);后者适合存储有类和实体性质的数据,由于能够写SQL,操做方式无限相似jdbc。
远程数据,rest api的访问采用自带的httpClient和JSON库能够方便实现,本身封装了一个简单的工具类,参数很是相似jquery.post等方法,接受路径、参数、成功失败两个callback函数,其中失败指的是服务器返回4xx或5xx状态码,而不是程序中抛出Exception。
关于线程和回调,java web程序员可能不太习惯,在ajax成功后修改页面显示是天然而然的,可是在安卓中,耗时操做如访问api的请求必须放到新线程进行,而新线程不容许修改UI,必须在主线程声明一个Handler,新线程调用该Handler的sendMessage,能够把这个Handler看作回调函数。


3.自学感想和下周任务

在java web的自学时,使用servlet和jdbc实现了增删改查的那天,对本身是个质变,这意味着以后的任何进展,都是在这天的基础上的优化和封装。由于这天的成绩意味着三点,一是具有了对UI的控制力,二是打通了与数据库之间的通道,三是掌握了重要的原生API。(最重要的是,有了控制感和信心)有了这个底子,往后的各类类库和框架,只会愈来愈简单。
因此这周的进展是比较满意的,虽然页面依然很丑,数据链接方法还没有重构到最优,不少参数和方法还不了解。但达到了战略目的:以原生API实现增删改查的功能,以及对最经常使用的技术进行摸底。目前项目中没有引入任何第三方库,下个星期的任务,就是把玩最流行的最好的第三方库,经过使用之和阅读源码,来反过来加强对基础API的了解。我java web的学习就是这么过来的。
下个星期的周末,会在github上有个思而勤工做室app2.0版的源码,其中包含对一些好用的第三方库的使用的代码。

上个图?嗯,欢迎点击战国那篇——

apk安装包在这里下载。

长期欢迎项目合做机会介绍,项目收入10%用于酬谢介绍人。新浪微博:@冷镜,QQ:908789432

相关文章
相关标签/搜索