AndroidTV 的焦点控制问题

   最近在做有关安卓TV的相关项目,与手机端的安卓开发不同的是,TV端需要我们对焦点进行一定的处理,才使得整个程序的逻辑符合我们的要求。在电视上进行操作,一般只能通过遥控的上下左右以及确认键来进行焦点的转移。而原生的安卓系统已经为我们做了默认的焦点获取处理,而这个默认的焦点则是自动选择该方向上距离最近的一个目标获得焦点,注意,这里的距离未必是直线距离,更多时候是该方向坐标的距离,比如:

wKiom1iyvtGAvUzGAAAT5RSUakw805.png-wh_50

   在这种情况下,在item1按下右键,item0将获得焦点,而在item0按下下键,item1将获得焦点,这往往会与我们的操作习惯不符。这时候就需要我们去控制焦点。当然了,最理想的情况是让系统自动帮我们处理焦点的获取,我们的布局可以做出适当的调整来使得焦点的变化符合逻辑,而在迫不得已的情况下,我们也可以通过以下的思路来改变。

   1.在XML属性布局文件中,通过设置nextFocusDown , nextFocusLeft ,nextFocusRight ,和nextFocusUp,这些属性的值来明确焦点从当前view转移后的view的对应id。

   2.通过设置focusable属性,来屏蔽部分控件的焦点获取。

   3.通过代码中的requestFocus来在某一时刻使某控件强制获得焦点。

   4.通过ViewTreeObserver.OnGlobalFocusChangeListener来监听全局的焦点变化,在焦点变化时进行代码操作。

   5.对特定布局的按键事件进行拦截,然后手动设置焦点变化。

   6.利用listview、gridview等adapterview的特性,当整体获得焦点时,再对item进行焦点分发,比如在需要保存选中状态的应用场景。

   暂时我用到的主要是这些做法,日后可能会继续进行补充。

本文出自 “DavidWillo的博客” 博客,请务必保留此出处http://davidwillo.blog.51cto.com/12613091/1901433

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android TV远程控制可以通过安装一个名为TvRemoteIME的应用程序来实现。这个应用程序通过一个Http服务器与待控制的设备上的TvRemoteIME输入法程序进行通信,并执行具体的操作逻辑。这种方式非常方便,只需要在待操作的设备上安装一个App,然后通过Http服务,无论是在Android、iOS还是Web端,都可以对其进行控制。\[1\] 如果您是非开发人员,可以按照以下步骤进行远程安装apk: 1. 在您的电视应用市场下载一个沙发管家或者当贝市场,这里以沙发管家为例。 2. 下载完成后打开沙发管家,使用遥控器移动到工具箱栏目下,找到远程推送选项。\[2\] 最近,TvRemoteIME已经更新,现在可以不依赖输入法就可以使用,但是如果不设置输入法,无法使用控制相关的功能。这对整个App的功能来说是致命的,后期还需要考虑如何保持活跃和解决控制问题。\[3\] #### 引用[.reference_title] - *1* *3* [远程控制你的智能电视,按键|输入|安装App等都已实现,已开源!](https://blog.csdn.net/weixin_33755554/article/details/87958060)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [AndroidTV开发12——大屏TV电视及盒子Apk远程安装说明文档](https://blog.csdn.net/u012556114/article/details/126201288)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值