- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android平台下的View焦点问题
今天解决了一个Android平台下的焦点问题。发现其中关键问题的所在是Android的touchMode。从JavaSwing平台过来的人,都会关注setFocusable()和requestFocus()方法,但是在Android的View中还有另外的两个个方法,setFocusableInTouchMode()和requestFocusFromTouch()方法。这个两个方法就是解决Android上的焦点获取问题的关键。
同时在View类中,还有一个isInTouchMode(),可以帮助我们在监听Focuse事件时判断是否执行click(). 代码如下:
XML/HTML代码
ImageButton.OnFocusChangeListener?mFocusChangeListener?=?new?ImageButton.OnFocusChangeListener(){??
??????
????public?void?onFocusChange(View?v,?boolean?hasFocus)?{??
????????Log.d(FocuseChange,?Focuse?has?changed.);??
??????????if?(hasFocus)?{??
???????????????????//?如果是touchmode就执行click,否则就会只是选中。???
??????????????v.setBackgroundDrawable(getResources().getDrawable(R.drawable.));??
??????????????if?(v.isInTouchMode()){??
??????????????????((ImageButton)v).performClick();??
??????????????}???
??????????}?else?{??
??????????????v.setBackgroundDrawable(getResources().getDrawable(R.));??
??????????????v.getBackground().setAlpha(100);??
??????????}??
??????????
????}??
}; ?
?
系统框架将处理日常的焦点移动来响应用户的输入,它包刮改变焦点(当界面是被移除,隐藏,或者作为一个新的View变为可用状态),通过isFocusable()这个方法我们可以知道view是否具有接受焦点的资格,也可以通过setFocusable().来设置view接受焦点的资格,对应在触摸模式下,你可以调用isFocusableInTouchMode().来获知是否有焦点来响应点触,也可以通过setFocusableInTouchMode().来设置是否有焦点来响应点触的资格.系统框架控制焦点移动到另一个组件的算法是在某一方向上邻近的组件,在极个别情况下,默认的算法可能不符合开发者的预想要求,在这种情况下,你可以覆写下列XML属性的布局文件:nextFocusDown,nextFocusLeft?,nextFocusRight?,和nextFocusUp设置他们的值来明确焦点从当前界面移动下个界面的Id。例如:?
LinearLayout
android:orientation=vertical
...
Button android:id=@+id/top
android:nextFocusUp=@+id/bottom
... /
Button android:id=@+id/bottom
android:nextFocusDown=@+id/top
... /
/LinearLayout
? ?? ?一般来说,在这个垂直布局,浏览的焦点会从第一个按钮开始,不会是从第二个或者其他的,现在topButtont已经通过nextFocusUp?(反之亦然)确定了bottom.??????通常如果你想宣布用户界面具有焦点的资格 (如果这个界面在传统上是没有的),可以在xml布局里去加上的android:focusable的属性,并设置它的值,您也可以宣布在触摸模式下具有焦点的资格,同样也只在xml里添android:focusableInTouchMode.的属性,并设置它的值. 当用户请求在某个界面聚集焦点时,会调用requestFocus().这个方法。监听到焦点活动(获得焦点或失去焦点都会被通知),会调用onFocusChange(),这个方法。虽然帖子比较短,但是我感觉这个例子还是非常有用的,
您可能关注的文档
最近下载
- 《探讨古诗词韵律之美——课件》.ppt VIP
- 2025年信息安全管理体系审核员注册准则-中国信息安全认证中心 .pdf VIP
- 2024年全国宪法知识竞赛经典试题库及答案.docx VIP
- 2025年ESS电子签章系统项目市场调查研究报告.docx
- 2025年医疗美容器械市场发展趋势与高端产品创新策略分析报告.docx VIP
- 物理化学第二 热力学基本定律.pptx VIP
- 中外戏剧史第二章印度梵剧.ppt
- 工作危害分析jha.doc VIP
- 风机基础监理实施细则.pdf VIP
- 圣诞节和春节对比(differences-between-Christmas-and-spring-festival)英语.pdf VIP
文档评论(0)