本文主要是介绍手机软件开发时的焦点管理策略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
随便写两句备忘做手机应用时,会经常遇到UI布局,画一堆按钮、输入框等这样的控件。我以前的做法很笨,就是给每个控件设个index索引,从1开始计,依次累加, 有按键动作时, 根据键值对index进行加、减操作定位控件焦点。
这种做法很容易想到,也很容易实现, 但问题是当有很多控件时,或者焦点切换不是依索引来排的, 这时就遇到麻烦了~
注:大多数windows桌面程序还是依index为序的,比如按Tab键就可以依次往增加索引,按shift+Tab就可以减索引。
经过分析浏览器的焦点管理, 采用算法搜索临近的控件是一种更好的方案。
这里大致先描述思想,空了再贴代码。
控件摆放在屏幕画布上, 必然有x,y,w,h这4种基本属性,再加上一个select属性标识是否获得焦点。 假设暂不考虑动态特效,那么在创建这些控件之处, 把它们存到一个容器里panel, 依据它们的x,y将它们全部画在屏幕上, select = true的控件绘制焦点框。
在按键发生改变时, 要做的就是查找出一个合适的控件, 将其select改为true.
我用到了4种算法,组合起来使用,效果不错:
最短边长计算算法
直线搜索算法
模糊搜索算法
直角三角形求边算法
这样, 不管按键或是触屏, 都能很容易得到焦点。
这篇关于手机软件开发时的焦点管理策略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!