App新手引导的设计

          现在的App界面比较繁杂,颜色搭配各异,各种操作按钮滑块散落,还有不少很难发现的功能,开发人员辛辛苦苦做出来的功能,却很少有用户知道入口,很少有人使用,这不得不说是一个很大的遗憾。

  我在一个手机方案公司,负责的是浏览器模块,前段时间公司有个新需求,新增一些新手引导。效果如图所示,(待插入图片),技术选择的话,我这次使用了popupwindow来实现,初期考虑使用在最外层添加一个透明的层,类似PS的遮罩层效果,但是这个技术只适合静态的新手引导,不适合某些交互性比较强的界面,比如划动的列表页,如果手指一直按住,引导要紧跟指示的元素,那样设计的路径位置计算就比较繁琐了。后来发现popupwindow有实现了这部分的功能,可以在列表页以及一些滑动的控件对目标进行追踪,最后为了程序的稳定性以及本着尽量简化(我承认我有点懒:)),利于后期维护的原则,最终选择了上面提到的方式。下面说一下,需要使用的引导界面,有静态的,也有动态的,有一开始就出现的也有操作过程中出现的。首先是App打开时就会出现的引导,比如这里的麦克风图标上的引导,代码上是在onwindowfocusChange这个函数为true的时候,也就是说在第一次窗口获得焦点的时候的显示。但是如果这个部分如果有多个同样层级的引导就需要注意出现的先后的顺序,我们可以把这个逻辑做在popupwindow的dissmiss回调函数里,不过结果就是这个类会变得相当的结构混乱,代码不容易整理,这是个需要规避的问题。再说一说动态部分的场景,首先是触发时机,当进行操作的时候,需要计算目标物件的显示状态,什么时候可见,什么时候隐藏。我的做法是在监听滚动条事件,当滚动的时候,系统会调用onScrollChange,在该函数内对目标物件进行可见性判断,如果可见那么就显示popupwindow,反之应该隐藏。做法相对简单,但是实现的过程还是会遇到一些意想不到的事情,第一个是popupwindow的一个空指针异常,在快速滑动的时候有一定的概率会出现这个问题,这个问题的解决方法网上有,就是利用反射获取该控件的内部成员,对其进行空指针捕获。

     以上是我的一些实现想法和遇到的问题。早就有过写一些研发总结的想法了,但是由于种种原因一直没有写,一直到今天,其实多写一些总结文章是大有好处的。

猜你喜欢

转载自blog.csdn.net/sd3425973/article/details/78326423