写出高质量软件是困难和复杂的:不仅仅是为了满足需求,还应该是健壮的,可维护的,可测试的,并且足够灵活以适应成长和变化。这就是洋葱架构出现的原因,它代表一组优秀的开发实践,用来开发任何的软件应用都是一个不错的方式。 洋葱架构,也称为整洁架构(The Clean Architecture),用来构建具有 Read More
换肤,顾名思义,就是对应用中的视觉元素进行更新,呈现新的显示效果。一般来说,换肤的时候只是更新UI上使用的资源,如颜色,图片,字体等等。本文介绍一种笔者自己使用的基于布局的Android换肤方案,不仅可以更换所有的UI资源,而且可以更换主题样式(style)和布局样式。代码已托管到github:Sk Read More
色彩位深度表示一个像素可以表示多少种颜色,它导致的失真是色彩的丢失,常见的位深度有: 8位:一个像素可表示2的8次方即256种颜色,占用1个字节 16位:一个像素可表示2的16次方即65,536种颜色,占用2个字节 24位:一个像素可以表示2的24次方即16777216种颜色,占用3个字节,24位及 Read More
Android 开发过程中,基于功能隔离、进程安全、进程保活等等考虑,我们经常需要为应用划分进程,然后不得不面临跨进程通信和跨进程共享数据的挑战。 跨进程通信 相对来说,跨进程通信比较简单,常用的方式有: 1.全局广播 广播是最简洁的跨进程通信方式,发送——接收广播即可完成异步通信。 2.AIDL Read More
很久以前,写过一篇关于下载的文章:基于HTTP协议的下载功能实现,今天对于Android上的文件上传,也简单的提两笔。在Android上,一般使用Http 模拟表单或者FTP来进行文件上传,使用FTP协议,可以直接使用Appache的FTPClient,使用方法很简单,不再赘述。这里主要说明一下Ht Read More
软件迭代过程中,业务不断更新,也要求软件持续更新。相应地,数据库更新升级也是不可避免的一个环节。Android作为客户端应用,数据库升级相对于服务端来说会麻烦一些。常见的升级方式有: 1.删除旧表和数据,创建新表。优点是简单方便,缺点是丢失了旧数据。适用于应用数据依赖度低的情况。 2.在代码中兼容处 Read More
世界是普遍联系的,任何事物和个体都直接或间接相互依赖,在时空长河中共同发展。在面向对象的世界中,更是如此,类与类之间的依赖,关联关系,模块(亦或是分层架构中的层)之间的耦合关系,都是我们在软件开发实践中,时刻在处理着的联系。 在软件开发中,我们一直尝试弱化这种联系,以便让软件程序更健壮,更灵活,便于 Read More
Dagger2是第一个使用生成代码的方式实现依赖注入的框架。作为Dagger的升级版本,自然有它的优势,优先注重的是执行效率。本文着重介绍Dagger2。官方据点传送门: https://google.github.io/dagger//users-guide.html 首先来看一下依赖注入和控制反 Read More
本文是作者在Android开发实践中的随手速记,记录一些小问题的解决方案和注意事项,持续更新。 以下是速记内容,若有不严谨的地方,望小伙伴们指出。 1.Module 不生成R文件,可尝试取消对该Module的引用,取消后AS会再次编译工程,看看此时能否生成R。 2.Activity theme设置错 Read More
安卓框架提供了一种LinearLayout 内部布局元素分割线的实现,建立一个指定长宽的矩形Shape: 1 2 4 5 8 9 10 11 作为LinearLayout的Divider属性引入: 1 8 9 10 11 18 19 ... Read More