1. 抽象图形
直线、矩形、随笔线的绘制是有共同点的:
(1) 这些图形都需要知道坐标信息,以确定绘制到屏幕的那个位置。
(2) 因为各自的形状不同,它们都要提供draw方法,绘制自身。
所以,我们将这些图形抽象出来,创建一个Drawing类。
2. 创建图形
每次用户选择绘制图形后,我们都需要创建一个图形实例,也就需要“new”。可是,这款软件要增量开发,以后可能还需要不断的扩充功能,丰富可绘制图形的种类。所以,我们在这里应用“简单工厂”方法来创建图形,把所有的有关图形的“new“都封装到工厂类里。
3. 单例画笔
(1)在我们的应用中,无论绘制什么图形,我们只用到一个画笔。(如果我们将画笔的颜色设置为蓝色,我们画出的矩形、椭圆都将是蓝色的。)
(2)我们需要对画笔进行设置,然后所绘制的图形随之改变,而我们又不想在图形类的draw方法中“new”。
所以,我们需要应用单例模式,保证在我们的应用中只存在一个唯一的画笔实例。
4. 设置偏好
为了能够更好的同Android系统核心应用的UI一致,我们让该应用中负责设置的Acitvity继承PreferenceActivity,然后用在xml文件中定义的view填充这个Acitivty。
5. 菜单功能
我们将菜单定义在一个xml文件中,当用户点击了menu键,我们就用这个xml文件中的view填充menu。我们将提供“保存”、“设置”、“清屏”、“图形”、“关于”和“退出”选项。
6. 保存图像
(1)为了能适应多种屏幕尺寸的手机,我们在创建图像的时候就要根据用户手机屏幕的宽高像素来创建。
(2)该软件将把图形保存到sdcard中,在保存之前,需要检测sdcard是否存在,是否可写入。如通过以上检查,就保存图像。
7. 监听广播
以下两种情况同事发生时,我们就需要监听短信广播,在我们的Activity中提示用户:
(1)用户手机设置为无声
(2)用户将我们的软件全屏运行