一、引言
      Android 学习已有一年半有余,先后做过两款游戏、三款应用和搭建一台服务端,也了解过一些Android相关的源码(JDK、SDK和NDK),学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。
    巩固和学习了更多的Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。android入门后,只会照着别人的葫芦来画瓢,即没有设计思想,也没有自主原创的代码,不好不好
于是乎,进了公司跟着项目走,用项目来驱动自己去学习和提高
公司是1+1开发模式,即1个美工 + 1个工程师,负责完成一个项目(主要是游戏开发),就完全需要自己设计游戏的布局、逻辑,以及各种动画,来增强用户体验的效果
当时主要是看Android官方的SDK API文档、中文API文档、 JDK源码,对有些感念不清楚,就上论坛去答案,如CSDN、ITEye、IBM、知乎,或者去啃google 官方的文档。
二、新掌握的Java基础学习
2.1、Activity View、Surfaceview的理解
掌握了常用控件、view、surfaceview使用方式,知道怎样去适配不同屏幕后,每天就是重复的工作,堆砌代码,难以进一步去提升自己
于是就自己给自个点事干,自定义控件,如对话框背景等,或去google code些开源的代码下来研究,学习人家的设计思想、模块功能的划分、代码组织结构等知识
这个过程中,涉及到的知识比较多,如版本管理工具SVN、Git、Mercurial,如设计模式的思想,如怎样构建通用的开源应用框架(考虑sdk1.5等版本),如何适用在不同屏幕分辨率的手机上等等
学习中会不断遇到一个又一个新的问题,因此需要不断去查资料、再学习各种工具,逐步积累,潜移默化中自己掌握的知识和工具就多了,眼界也开阔了。
2.2、android-pulltorefresh 
一个强大的拉动刷新开源项目,支持各种控件下拉刷新,ListView、ViewPager、WevView
、ExpandableListView、GridView、ScrollView、Horizontal ScrollView、Fragment上下左右拉动刷新,比下面johannilsson那个只支持ListView的强大的多。并且它实现的下拉刷新ListView在item不足一屏情况下也不会显示刷新提示,体验更好。
成果:
    ListView能满足一个Android 项目的列表:
(1)下拉刷新ListView
(2)下拉刷新及滑动到底部加载更多ListView
(3)拖动排序的ListView,同时支持ListView滑动item删除,各个Item高度不一、单选、复选、CursorAdapter做为适配器、拖动背景变化等。
2.3、Menu
MenuDrawer
滑出式菜单,通过拖动屏幕边缘滑出菜单,支持屏幕上下左右划出,支持当前View处于上下层,支持Windows边缘、ListView边缘、ViewPager变化划出菜单等。
SlidingMenu
滑出式菜单,通过拖动屏幕边缘滑出菜单,支持屏幕左右划出,支持菜单zoom、scale、slide up三种动画样式出现。
ArcMenu
支持类似Path的左下角动画旋转菜单及横向划出菜单、圆心弹出菜单
android-satellite-menu
类似Path的左下角动画旋转菜单
radial-menu-widget
圆形菜单,支持二级菜单
实训总结报告
2.4、异常处理
登录提交时,用户名、密码不能为空,否则不与提交。
数据库返回登录信息,处理登录成功与否的异常。
注册提交时,检查注册用户名,密码不能为空,密码与确认密码要相同,否则不与提交注册。
三、Android Xutils 框架的使用 
在开发中还学习了一套强大的快速开发框架,Android Xutils 框架。
3.1、xUtils使用
xUtils 包含了很多实用的android工具。
xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...
xUitls最低兼容android 2.2 (api level 8)
3.2、DbUtils数据库
android中的orm框架,一行代码就可以进行增删改查;
支持事务,默认关闭;
可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
支持绑定外键,保存实体时外键关联实体自动保存或更新;
自动加载外键关联实体,支持延时加载;
支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。
3.3、ViewUtils视图
android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定;
新的事件绑定方式,使用混淆工具混淆后仍可正常工作;
目前支持常用的11种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
3.4、HttpUtils网络请求
支持同步,异步方式的请求;
支持大文件上传,上传大文件不会oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD请求;
下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;
返回文本内容的GET请求支持缓存,可设置默认过期时间和针对当前请求的过期时间。
3.5、BitmapUtils图片异步加载
加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的
图片错位等现象;
支持加载网络图片和本地图片;
内存管理使用lru算法,更好的管理bitmap内存;