摘要:
本来想下载Android官方源代码,没想到android.git.kernel.org维护,不能访问,非常遗憾,并因此还郁闷了几天。后来转投MIUI,没找到它的源码,不知道它的"超过40万人社区开发团队"是什么意思,求解具体开发人员几何,都是谁?后来一想,竟然忘记了CyanogenMod这茬,这可是的的确确的开源啊,我的手机一直也在用CyanogenMod系统的,感觉确实不错。1.准备我得环境如下,VirtualBox 4.1.2.r73507Ubuntu11.10 Beta2(32位)下载CyanogenMod的gingerbread分支Ubuntu的环境配置大家可以参考 阅读全文
摘要:
从接触Linux到现在,也已经好几年了,对于linux的感觉一直是分分离离,充满了遗憾,最大的遗憾之一就是一直没能精通vim,不能完全适应vim下的代码开发。最近工作中又广泛接触到vim的使用,我觉得有必要总结一下。但是我又无法针对vim的所有命令使用展开叙述,反而认为针对android,或者说java的一些常用编辑相关的操作命令做一个解说更具有效性。1.vim的三种命令模式(1).命令模式:用于输入命令,简单更改(2).插入模式:用于插入文本,修改文本(3).末行模式:用于输入命令,视化操作,查找替换等这三种模式熟悉后,颠覆了windows里面编辑+工具栏(或者菜单栏)的方式,是我们进入命令 阅读全文
摘要:
有些东西看多了,就厌烦了:extjs对我这种感觉最为强烈。甚至,有时觉得设计之殇是审美疲劳。直角看多了,就想看看圆角,不知何时,这几年刮起了一阵阵的圆角设计风:CSS新标准纳入圆角元素,iphone中几乎随处可见圆角设计,也开始出现很多圆角名片了...今天我们就实现一个圆角的ListView效果。圆角的设计,我们并不追求到处都用,无处不用,android中有少数界面用直角确实容易显得锋利,和周边界面太过对比而显得不协调,比如大栏目列表,设置等等,而采用圆角实现,则会活泼,轻松的多,也融合的特别好。1.感觉实际上在Android中因为SDK中没有默认对圆角的一个完整的支持,需要麻烦自定义设置才能 阅读全文
摘要:
在上篇文章《Android学习系列(22)--App主界面比较》中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局。今天我们就这个经典布局,用代码具体的实现它。1.预览图先看下最终的界面设计图:上面顶部是一个9patch背景图片+标题文字;下面底部是5个tab标签,表示应用的5大模块。中间内容部分则是各个模块的具体内容,可以再分类,或者直接显示内容。2.准备素材按照上篇文章的界面,我们需要事先提供两大方面的素材:顶部+底部。顶部的素材非常简单,最重要的是背景(9patch的图片):底部的素材稍微多一点:(1).每个tab的背景都需要正常和选中两种,一共10张图片;(2).每个tab之 阅读全文
摘要:
本文算是一篇漫谈,谈一谈当前几个流行应用的主界面布局,找个经典的布局我们自己也来实现一个。不是为了追求到底有多难,而是为了明白我们确实需要这么做。走个题,android的UI差异化市场依然很大,依然值得去挖掘。铸就经典,是为了超越经典!下面我们以下面10个应用来分析比较它们的主界面:1.QQ20112.新浪微博3.凤凰周刊4.小米读书5.微信6.太平洋电脑网7.360卫士8.Camera3609.大众点评网10.挖财1.QQ2011QQ应用最新版本QQ2011 Beta3,从最新的版本看,界面比之前简洁了一些。我以夜间模式为例子:从图中可以看出来,QQ分为3大模块:空间动态,QQ聊天,其他QQ 阅读全文
摘要:
工厂方法模式,往往是设计模式初学者入门的模式,的确,有人称之为最为典型最具启发效果的模式。android中用到了太多的工厂类,其中有用工厂方法模式的,当然也有很多工厂并不是使用工厂方法模式的,只是工具管理类。今天以ThreadFactory举例说明一下简单工厂模式和工厂方法模式。工厂方法模式,Factory Method,简单的方式,不简单的应用。1.意图定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方式模式使一个类的实例化延迟到其子类。热门词汇:虚构造器 延迟 创建对象 子类2.结构图和代码我们先看看标准的工厂方法结构图:先抽象的产品类,抽象的工厂类,然后用客户端具体的工厂生产相应 阅读全文
摘要:
命令模式,在.net,java平台的事件机制用的非常多,几乎每天都与之打交道。android中对我印象最深的就是多线程多进程的环境,所以必然大量使用到Runbable,Thread,其实用的就是最简单的命令模式。命令模式,Command Pattern,把请求封装为一个对象,多么巧妙的一个说法啊。1.意图将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。热门词汇:动作 事物 请求封装 排队 打包 异步2.结构Command接口提供了Execute方法,客户端通过Invoker调用命令操作来调用Recriver,绕了一大圈,但是却把 阅读全文
摘要:
享元模式,给我的感觉就是对象池,缓存单例对象。java中的享元模式最经典的例子就是String类了,还有一个最容易理解的就是word文档字符共享的例子,也是享元模式的经典应用。本文对android中的sql编译类SQLiteCompiledSql说明,展开分析,也是很容易理解的一个例子,其实,android SDK中必然有很多地方需要用到享元模式。享元模式,Flyweight Pattern,说的严重点,一些程序如果不使用享元模式的话,根本不能使用面向对象的方法实现,对象会多的撑爆你的内存:"用面向对象思想设计的应用常常会面临对象实例过多的问题"。1.意图运用共享技术有效地 阅读全文
摘要:
备忘录模式,在工作代码中,要么不用,要么经常用到。举个例子,程序员喜欢写代码,coding,coding,这个时候它的状态是很high,但是每隔一段时间总要去上一下厕所,状态是放松relax,上完测试归来后又恢复到high的状态,继续coding。这个过程对于身后的老板来说,它默认同意你离开去上厕所,他也希望你回来后恢复high的状态继续工作,但是你在这个过程中上厕所的这件事,他是不需要了解细节的,而且做为当事人你也不希望他了解你上厕所的细节吧,你只要回来后恢复激情high着继续工作,老板应该就不会挑你的刺。这就是备忘录模式。本文今天就Canvas的一个save(),restore()操作分析 阅读全文
摘要:
模板方法,和单例模式是我认为GOF的23中最简单的两种模式。但是我个人对模板方法的经典思想特别推崇,虽然模板方法在大对数情况下并不被推荐使用,但是这种通过父类调用子类的方法,使用继承来改变算法的一部分,是面向对象的一种基本认识。打比方说父亲有很多理想,就行医救人吧,但是父亲医术不行,只能靠儿子,儿子长大后遵从父亲大志,春风拂面,妙手回春,实现了父亲的理想,儿子做的事情早在出生前就定下来了,是父亲之前久定好的模板。认识到模板方法的这种思想,父类可以让未知的子类去做它本身可能完成的不好或者根本完成不了的事情,对框架学习大有帮助。本文以View中的draw方法为例,展开分析。模板方法,Templat 阅读全文
摘要:
单例模式,可以说是GOF的23种设计模式中最简单的一个。这个模式相对于其他几个模式比较独立,它只负责控制自己的实例化数量单一(而不是考虑为用户产生什么样的实例),很有意思,是一个感觉上很干净的模式,本人很喜欢这个模式。android中很多地方都用到了单例模式,本文以输入法管理者InputMethodManager为例,展开分析。单例模式,Singleton Pattern,能够以其特有的优势,替代系统中全局变量,应用非常广泛。1.意图保证一个类仅有一个实例,并提供一个访问它的全局访问点。热门词汇:单例 唯一 私有构造2.结构android中有很多系统级别的全局变量,如时间,输入法,账户,状态栏 阅读全文
摘要:
观察者模式,是一种非常常见的设计模式,在很多系统中随处可见,尤其是涉及到数据状态发生变化需要通知的情况下。本文以AbstractCursor为例子,展开分析。观察者模式,Observer Pattern,是一个很实用的模式,本人曾经接触到的各种平台以及曾经参与项目中打印模板解释器中都用到了此模式。1.意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。热门词汇:依赖 发布-订阅 事件 通知 更新 监听2.结构这是一个最简单的观察者模式,目标对象能够添加和删除观察者,当自己某种状态或者行为发生改变时,可通过notify通知注册的观察者进行更 阅读全文
摘要:
游标ListView,提供索引标签,使用户能够快速定位列表项。 也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧。 一看图啥都懂了:1.游标(Fast scroll thumb) 就是右边的那个拖动的方块,这个非常的简单: <ListView android:id="@+id/tweaked_list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:fastScrollEna 阅读全文
摘要:
Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用。在android UI设计,几乎所有的widget和布局类都依靠这两个类。组合模式,Composite Pattern,是一个非常巧妙的模式。几乎所有的面向对象系统都应用到了组合模式。1.意图将对象View和ViewGroup组合成树形结构以表示"部分-整体"的层次结构(View可以做为ViewGroup的一部分)。组合模式使得用户对单个对象View和组合对象ViewGroup的使用具有一致性。热点词汇: 部分-整体 容器-内容 树形结构 一致性 叶子 合成 安全性 透明 阅读全文
摘要:
=======================2011-08-26==================================有时候,最难的是坚持;有时候缺少的是信念。=======================2011-08-07==================================从接触设计模式到如今大概4年左右的时间,一直都想有朝一日定要精通,坐于床头,侧望左右,设计模式的书买了7,8本了,也看了很多参考和视频,也用到了一些。但是今天我终于停下来,停下来梳理,停下来欣赏,也停下来反省,总之,我今天停下来了,是为了走的更好,走的更远。如果有幸我能够把这个系列写到23 阅读全文
摘要:
JSON数据格式,在Android中被广泛运用于客户端和网络(或者说服务器)通信,非常有必要系统的了解学习。 恰逢本人最近对json做了一个简单的学习,特此总结一下,以飨各位。 为了文章简明清晰,尽量多列点,少废话。 参考文档:http://www.ietf.org/rfc/rfc4627.txt?number=46271.JSON解析 (1).解析Object之一:{"url":"http://www.cnblogs.com/qianxudetianxia"} 解析方法:JSONObject demoJson = new JSONObject(json 阅读全文
摘要:
宜未雨而绸缪,毋临渴而掘井。----朱用纯《治家格言》 离线下载,在有网络的情况下下载服务器数据,以便无网络时也能阅读,就是离线阅读。 离线下载的功能点如下: 1.下载管理(开始、取消下载)。 2.网络判断(Wi-Fi,3G)。 3.独立进程。 4.定时和手机催醒。 5.自启动。1.下载管理 这里不便关注下载的细节方法,网络下载的方法很多,大概如下: /** * 下载文件 * @param url 下载地址 * @param dest 下载存放的本地文件 * @param append 断点续传 * @return * @throws Exception */ public long dow. 阅读全文
摘要:
本文算是一篇漫谈,谈一谈关于android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构。 关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的角度,看到整齐的代码,优美的分层总是一种舒服的享受的。 从艺术的角度看,其实我们是在追求一种美。 本文先分析几个当今比较流行的android软件包,最后我们汲取其中觉得优秀的部分,搭建我们自己的通用android工程模板。 1. 微盘 2.久忆日记 3.网易新闻 4.小米应用1.微盘 微盘的架构比较简单,我把最基本,最主干的画了出来: 第一层:com.sina.VDisk:com.sina(公司域名)+ap. 阅读全文
摘要:
根据前面文章中ListView拖拽的实现原理,我们也是很容易实现推拽GridView的,下面我就以相同步骤实现基本的GridView拖拽效果。 因为GridView不用做分组处理,代码处理起来更简洁,而且原理前面已经讲解清楚了,代码中只是简单的过下,必要的地方简单的注释一下。1.主界面DragGridActivity.public class DragGridActivity extends Activity { private static List<String> list = null; //自定义适配器 private DragGridAdapter adapter = n 阅读全文
摘要:
接着上篇Android学习系列(10)--App列表之拖拽ListView(上)我们继续实现ListView的拖拽效果。7.重写onTouchEvent()方法。 在这个方法中我们主要是处理拖动和放下。 拖动是选中项的影像随着手指滑动;放下是在拖动结束的时候交换数据。 方法的整体结构如下: /** * 触摸事件 */ @Override public boolean onTouchEvent(MotionEvent ev) { //如果dragmageView为空,说明拦截事件中已经判定仅仅是点击,不是拖动,返回 //如果点击的是无效位置,返回,需要重新判断 if(dragImageView. 阅读全文