1,明确划分与UI相关和与UI无关的部分
根据UI的设计图,我们要把界面展现的数据先抽出去,只看UI的表现。也就是说,把UI相关的部分抽出来。比如一个界面可能需要分几部分组成,每一部分大概怎样设计等。
2,划分屏幕大致,明确出跳转关系
要考虑到你的APP所对应的屏幕大致及DPI,不同的屏幕与DPI,你有可能会存在不同的UI布局,最典型的是在3.0以上的SDK版本,可能引入了Fragement元素,手机屏幕与平板的屏幕的UI设计,完全是两种不同的风格。
还有,尽可能地明确出跳转关系,这可以用一些小卡片的形式来标记,一个卡版表示一个画面,把不同画面之间的迁移关系明确出来。
同时,还要把这些画面之前的相同点与不同点找出来,由于这会影响到是否决定提取共通画面。
3,列出需要用到的UI元素(Widget)
把界面上展现的UI元素列出来,像常用的button, imagebutton这些很简单,一看就知道,关键是有些UI,可能会涉及到一些自定义的View,这里一定要多考虑。
另外,有可能为了统一控制,比如也有可能扩展一个Button,派生类里面可能只是改变一个字体大致等,这种行为通常是用于多数UI的字体大致相同,可以抽象出来个共通的Button,这样在各个UI里面,就可以不用都来设置这个字体大致。
还有,也可以抽出共通的style,比如textview的style,文本颜色,字体大致,是否加粗等。
4,列出哪些UI元素可以用SDK的,哪些则是需要自定义
据我的经验,通常一个项目里面都会有自定义的组件(View),多数是组合控件——把不同的Widget组合成一个Layout。这还要需要根据项目自身的需求来定。
注意:这里一定要有一个良好的设计,以应地需求变更。比如第一版需求,可能不需要一些组合View,直接使用SDK自身的Widget就能完成,但经过一些变动之后,提高之前的UI设计不合时宜,可能需要提供自定义的View,那么原来用到SDK自身的Widget的地方可能需要改动。这种改动说大也大,说小也小,在设计的时候,要多考虑一下这种需求变更。
5,完成UI界面的绘制
这一步,其实不一定会用到,通常情况下,不会涉及到自绘制,由于自绘制比较麻烦,而且费时刻,然而在特殊情况下,自绘制能提高效率,由于你用View布局,会涉及到layout, measure, touch event, dispatch draw等方面,这些会影响性能。
6,进行内部逻辑和UI界面的整合
通常一个View里面,都会有一些逻辑,特别是自定义的View,可能会封装一些特定的属性。
在使用这些View的时候,UI的activity会与这些View有一个逻辑的整合。