遥控器焦点乱跑?my-tv 的 5 个布局决策 遥控器焦点乱跑my-tv 的 5 个布局决策【免费下载链接】my-tv我的电视 电视直播软件安装即可使用项目地址: https://gitcode.com/GitHub_Trending/my/my-tv用户按了三次方向键焦点从频道列表跳到了右上角的帮助按钮上。TV 应用 UI 设计的核心就是这件事屏幕大、遥控器键少焦点自己走必然走到用户没预期的地方。my-tv 是个装完就能看的电视直播应用它的第一步是把焦点的活动范围收窄。主界面只是一个空壳activity_main.xml 里只有一个根 FrameLayout没有子节点还标了tools:deviceIdstvFrameLayout android:idid/main_browse_fragment tools:deviceIdstv /真正的界面是运行时由 Leanback 的 BrowseSupportFragment 注进来的布局文件只声明这页只给电视用。Leanback 的 BrowseFragment 配置其实就一行MainFragment.kt 的 onCreate 第一句headersState HEADERS_DISABLED // 不显示头部和搜索栏数据来自 TVList.kt 里的一个 map央视、地方、港澳台、国际 4 组每组一行 ListRow卡片上放频道 logo 加正在播出的节目名。好处是焦点只能在 4 行卡片之间动按不到屏幕边缘用户怎么按都不会迷路。遥控器就几个键导航必须可预测能参与导航的按键其实就 5 个上下切频道、中间确认、返回、帮助。所以焦点路径必须可预测。CardPresenter.kt 里的写法最直白cardView.isFocusable true cardView.isFocusableInTouchMode true卡片 300x101 像素白底logo 居中。高亮色#0096a6定义在 colors.xml 里但翻代码会发现对应的 setOnFocusChangeListener 是被注释掉的——本来想聚焦时把信息区背景换成高亮色后来放弃了高亮完全交给 Leanback 默认的缩放和边框。我的体感是这更稳框架的聚焦动画统一自己画反而容易和各系统版本打架。导航路径则完全靠 ListRowPresenter 的默认算法这 5 个 Android TV 布局文件里没有一处 nextFocusRight。行式结构下这够用——左右在行内走上下切行路径由行数决定。换成二维网格就不能指望默认值了得手写路径。网格改行式频道列表样式的一次退让频道列表不是一直长这样的。翻 HISTORY.mdv1.6.2 加了新的列表样式v1.7.2 支持网格/行式切换但注了条软件重启后生效。到 v2.0.0 一次修了两个 bug网格样式时点击空白处不退出和频道列表样式切换可能不生效。这是典型的取舍。网格一屏放得下更多频道好看但焦点变二维遥控器没有滚动指示器用户不知道右边还有没有频道按着按着就丢了。行式焦点简单配合菜单 3 秒自动关闭v1.3.4 引入把停留在列表里的时间也限制了。项目最后把网格留在设置里当选项默认体验走行式。样式不做热切换、要重启生效是妥协比起切换瞬间维护两份焦点状态重启更不容易出 v2.0.0 那种切换不生效的 bug。间距用 dp 算不用合适定了行式下一个问题是三米外看不看得清。频道号层 channel.xml 是个 90dp x 60dp 的盒子40sp 粗体白字marginEnd 170dp钉在右上时钟层 32spmarginEnd 50dp。两层同在右上角但不打架就是靠这两个错开的偏移量。节目信息条 320dp x 80dp距底边 20dp标题 22sp 用#FFEEEEEE节目名 16sp 用#B3EEEEEE——两行字靠透明度差 70% 分主次这在电视上比换颜色可靠。设置弹层只有 300dp 宽不铺满屏4 个 Switch 竖排遥控器按一下挪一格按不到边界。播放器页故意没有系统控制条播放时所有浮层收起剩下最空的文件 player.xml全文不到 30 行SurfaceView 和 media3 的 PlayerView 叠在黑色背景里两个都写了androidx.media3.ui.PlayerView app:use_controllerfalse /系统控制条关掉控制层自己画——频道号、时钟、信息条全叠在视频上。原因不复杂系统控制条的焦点体系不知道你的应用状态用户播放中误按方向键焦点会飞出视频区钻进控制条。关掉之后播放器页焦点只剩频道列表浮层和空白处方向键按错了也不出界。打开 channel.xml把 marginEnd 从 170dp 改成 120dp看看频道号贴到右边之后还留没留得下时钟。【免费下载链接】my-tv我的电视 电视直播软件安装即可使用项目地址: https://gitcode.com/GitHub_Trending/my/my-tv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

最新新闻

免安装解压.kjy文件:从原理到实战的完整方案

免安装解压.kjy文件:从原理到实战的完整方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 10:18:23
16x16点阵屏制作全攻略:从动态扫描到字模显示

16x16点阵屏制作全攻略:从动态扫描到字模显示

简介:这是一份面向单片机初学者的1616 LED点阵汉字显示工程,以AT89C51为主控、74HC154管理列选通,74HC595作行驱动,涵盖C语言源码、汇编启动文件、Proteus仿真原理图及Keil工程文件。压缩包共18个文件,主要包含.c/.a51…

2026/9/2 10:18:23
RVC 变声器指南:10 分钟语音数据训练出可用 AI 音色模型

RVC 变声器指南:10 分钟语音数据训练出可用 AI 音色模型

RVC 变声器指南&#xff1a;10 分钟语音数据训练出可用 AI 音色模型 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conve…

2026/9/2 10:18:23
红外发射代码实战:从NEC协议到38kHz载波与硬件驱动全解析

红外发射代码实战:从NEC协议到38kHz载波与硬件驱动全解析

简介&#xff1a;红外编码发射是红外通信的关键环节&#xff0c;网上解码资料较多&#xff0c;编码发送代码相对稀缺&#xff0c;针对STC8单片机的完整实现尤为珍贵&#xff0c;适合嵌入式学习者和单片机开发者。压缩包共15个文件&#xff0c;大小仅35KB&#xff0c;以C源文件、…

2026/9/2 10:18:23
WeChatMsg终极指南:微信聊天记录导出与年度聊天报告

WeChatMsg终极指南:微信聊天记录导出与年度聊天报告

WeChatMsg终极指南&#xff1a;微信聊天记录导出与年度聊天报告 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatM…

2026/9/2 10:18:23
基因驱动技术如何拯救濒危物种:以美国榆树抗病工程为例

基因驱动技术如何拯救濒危物种:以美国榆树抗病工程为例

这次我们来看一个关于美国榆树&#xff08;American elm&#xff09;保护的技术项目。这个项目并非传统的软件开发或AI模型&#xff0c;而是一个结合了生物技术、基因工程和生态保护的科学实验项目。它的核心目标是&#xff1a;通过现代生物技术手段&#xff0c;拯救因荷兰榆树…

2026/9/2 10:13:22