初学android的第一个习作

首发:个人博客,更新&纠错&回复

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

1.项目结构及技术点

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

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

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

书单标签页

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

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

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

时间: 2024-10-08 16:24:58

初学android的第一个习作的相关文章

白手起家之android学习第一天

今天晚上没去实验室,自己一个人跑到教室来学android了,教室很凉快,很安静,是一个学习的好地方,闲话不多说,记录自己的学习过程,没写过博客,也许有写的有点水,见谅啦~ 第一讲:android的学习路线 (1)android学习基础与内容 学习android需要具备以下基础:(当然本人现在小白,从未学过java,只能学一点补一点) java语言基础,面向对象基础,Java常用设计模式(工厂模式,单例模式等),java数据结构和算法,关系型数据库(mysql和Oracle),JDBC数据库编程,

一、Android学习第一天——环境搭建(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第一天——环境搭建 Android 开发环境的搭建 环境搭建需要①Android SDK ②JDK ③eclipse 环境搭建开始: ㈠将Android SDK与JDK解压,最好路径中不要出现汉字,然后配置环境变量,方便命令行操作 ㈡为eclipse(3.4.1)安装开发Android插件——Android ADT Help-->Install N

Android自动化第一篇:Mac下的Eclipse+Pydev 环境搭建

开始了我的自动化之路 首先安装环境,参考下文 转自 http://www.51testing.com/html/46/n-848346.html http://www.51testing.com/html/46/n-848346-2.html 安装时出现问题解决: Mac环境下eclipse插件pydev安装失败的解决办法 1. 打开eclipse2. 选择install new software3. 输入pydev, http://pydev.org/updates/4. 根据向导安装5. 重

20172327 2017-2018-2 《第一行代码Android》第一章学习总结

学号 2017-2018-2 <第一行代码Android>第一章学习总结 教材学习内容总结 - Android系统架构: 1.Linux内核层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动,音频驱动,照相机驱动,蓝牙驱动,Wi-Fi驱动,电源管理等. 2.系统运行底层 - 通过一些C/C++库来为Android系统提供了主要的特性支持 库名 功能 SQLite库 提供数据库的支持 OpenGL/ES库 提供3D绘图支持 Webkit

【Qt for Android】第一个安卓程序

1)首先需要去官网上下载 Qt for android 版本的 Qt SDK 2)下载 android 相关的 SDK,下载地址不用找了,在Qt Creator工具选项的Android配置中有相应的下载链接地址. 3)下载完安卓SDK后,在上面的配置界面中指定相应SDK的目录,然后在"Build & Run"中新增Android的Kits 4)编写Qt代码后,点击"Run"即可,在弹出的Android设备列表中,选择程序要安装运行的Android设备.(下图

Android课程---第一课

Android是一种基于Linux的开源的操作系统 主要使用于智能设备,如智能手机.平板电脑和智能电视等 由Google公司领头开发并推广,2008年推出第一个版本. 此系统最初由”安卓之父"Andy Rubin(安迪-鲁宾)开发(2003年). 区别DVM与JVM: 1.首要差别 Dalvik: 基于寄存器,编译和运行都会更快些 JVM: 基于栈, 编译和运行都会慢些 2.字节码的区别 Dalvik: 执行.dex格式的字节码,是对.class文件进行压缩后产生的,文件变小 JVM: 执行.c

Android开发第一天

今天做了两件事,一是开通了博客,准备在大学即将结束的时候开始做点正经事:二是搭建好了android的开发环境,并且终于在自己的手机上调试成功了第一个“helloworld”. 第一件事,准备写博客,自己觉着应该算是一件不错的事情.看过很多人写博客,但看的杂文累较多,纯技术性文章读的少之又少.当年韩寒的“韩三篇”写出来的时候没能及时读到,已经错过了新浪博客辉煌年代的光景.现在愿意写杂文的博主已经少的可怜了,但是一些像csdn等的技术分享型的论坛博客等,虽然热度也有缩减,但作为一个即将工作的程序猿来

Android学习第一课

首先看一个android项目中各个包的作用 以下看几个经常使用的控件: 1. TextView 显示文本框控件 2. EditText 输入文本框 TextView控件经常使用属性: id----控件的id layout_width----控件的宽度 layout_height----控件的高度 text----文本内容 textSize----文本大小 textColor----文本颜色 background----控件背景 EditText控件经常使用属性 id----控件的id layou

金阳光Android自动化测试第一季

第一季:http://www.chuanke.com/v1983382-106000-218422.html 第一节:Android自动化预备课程基础(上) 1. 基于坐标点触屏:monkeyrunner, 北京播思自研工具 2. 基于随机流的单元测试:CTS,monkey 3. 基于元素图形对比:seetest,I-test 4. 腾讯bita和GT 腾讯云测试平台:http://bita.qq.com GT测试:http://gt.tencent.com/ 5. 百度云和ITestIn, 阿