`
chenpeilei2003
  • 浏览: 187386 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

手机软件开发时的焦点管理策略

阅读更多
随便写两句备忘

做手机应用时,会经常遇到UI布局,画一堆按钮、输入框等这样的控件。我以前的做法很笨,就是给每个控件设个index索引,从1开始计,依次累加, 有按键动作时, 根据键值对index进行加、减操作定位控件焦点。
这种做法很容易想到,也很容易实现, 但问题是当有很多控件时,或者焦点切换不是依索引来排的, 这时就遇到麻烦了~

注:大多数windows桌面程序还是依index为序的,比如按Tab键就可以依次往增加索引,按shift+Tab就可以减索引。

经过分析浏览器的焦点管理, 采用算法搜索临近的控件是一种更好的方案。

这里大致先描述思想,空了再贴代码。

控件摆放在屏幕画布上, 必然有x,y,w,h这4种基本属性,再加上一个select属性标识是否获得焦点。  假设暂不考虑动态特效,那么在创建这些控件之处, 把它们存到一个容器里panel, 依据它们的x,y将它们全部画在屏幕上, select = true的控件绘制焦点框。
在按键发生改变时,  要做的就是查找出一个合适的控件, 将其select改为true.

我用到了4种算法,组合起来使用,效果不错:
最短边长计算算法
直线搜索算法
模糊搜索算法
直角三角形求边算法

这样, 不管按键或是触屏, 都能很容易得到焦点。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics