功能需求:仿照photoshop的颜色选择,用户可以自己取到任意颜色。
实现方案:点击自定义颜色button,弹出一个自定义颜色的POP框,在POP框内可以选择各种颜色,最后退出时传用户所选定颜色值给上一界面。
具体细节:这个功能的实现包含了很多小细节,首先要画一个HSB的Huebar,S和B都是100%,H值是可变的。(系统代码关于颜色这块并未有HSB模式,只有ARGB模式,所以是用RGB来进行Huebar颜色的渐变处理的。)画好Huebar后点击Huebar需要左边的Main color area来根据Huebar中选择的颜色值来重新画出一个渐变的Frame,类似Photoshop中那种效果。点击左侧Main color area后,就可以取到自定义的颜色值并另作了一块Frame来显示这个自定义颜色值供用户确认,点击确定退出这个界面并将该颜色传回上一级菜单。
实现技术点:首先要对整个功能的界面头脑中有一个大致的概念,然后逐步实现,技术点在于将所有需要draw的颜色写进一块事先申请好的buffer中,再通过对应的API在frame中将这块buffer中的颜色显示出来。因为所需buffer非常大,故buffer必须申请在fg中,而不是heap。