首页/新闻资讯/正文详情

PhotoView 搬上 Android TV:遥控器导航与焦点框改造

发布时间:2026/11/11 13:21:51 来源:云帆数科 栏目:资讯中心
PhotoView 搬上 Android TV:遥控器导航与焦点框改造
PhotoView 搬上 Android TV:遥控器导航与焦点框改造【免费下载链接】PhotoViewImplementation of ImageView for Android that supports zooming, by various touch gestures.项目地址: https://gitcode.com/gh_mirrors/ph/PhotoView客厅里,你坐在沙发上,手里只有一台遥控器,却想放大这张家里的合影看细节。手机上两根手指一搓就完成的事,在电视大屏上得靠方向键一步步做。PhotoView 是 Android 上现成的图片缩放组件;要把它搬上 Android TV,补的就是按键导航和焦点反馈。电视和手机的“距离”:两米视距差在哪同样是一张图,手机和电视对它的要求差得不少:维度手机Android TV输入方式手指直接触摸,双指缩放遥控器方向键、OK 键、± 键观看视距30-50 厘米2-5 米焦点模型没有焦点,点哪看哪焦点必须停在屏幕上某个可见位置可点击区域指尖大小就够要放大到两米外一眼能定位手机上靠手完成的缩放、平移、定位,到电视上全要换成键和焦点来表达。所以要改三类东西:程序声明、按键交互、焦点反馈,下面动手做。 动手改:从特性声明到焦点适配五步走完,遥控器就能接管 PhotoView 的平移和缩放。在 Manifest 里声明电视特性电视没有触摸屏,不声明 touchscreen 可选,应用可能从电视列表里被过滤掉;leanback 特性则表明这是 TV 应用,写法可对照 sample 的 Manifest。uses-feature android:nameandroid.hardware.touchscreen android:requiredfalse / uses-feature android:nameandroid.software.leanback android:requiredtrue /装到真机,电视主页的应用列表里会出现这个应用,手机上运行则不受影响。把 PhotoView 依赖引进来PhotoView 是第三方库,系统里没有,按坐标引入即可,版本沿用 2.3.0。dependencies { implementation com.github.chrisbanes:photoview:2.3.0 }想跑官方示例,执行git clone https://gitcode.com/gh_mirrors/ph/PhotoView后打开 sample 模块;同步完成后,项目里可以直接引用 PhotoView 这个类。给布局加上焦点属性方向键移动的是焦点而不是手指,不可聚焦的视图收不到按键事件,焦点属性必须显式打开。com.github.chrisbanes.photoview.PhotoView android:idid/photo_view android:layout_widthmatch_parent android:layout_heightmatch_parent android:scaleTypecenterInside android:focusabletrue android:focusableInTouchModetrue/真机上按方向键,焦点会停在图片上,系统默认高亮一闪而过,两米外根本看不出来——下一步自己画。让方向键和 ± 键驱动平移与缩放PhotoView 的手势体系只监听触摸事件,遥控器不产生触摸,按键就得手动翻译成矩阵操作:方向键做平移,± 键做缩放。private static final float ZOOM_STEP 1.2f; // 每按一次放大的倍数 private static final float PAN_STEP 120f; // 每按一次平移的像素 photoView.setOnKeyListener((v, keyCode, event) - { if (event.getAction() ! KeyEvent.ACTION_DOWN) { return false; } Matrix m new Matrix(); photoView.getSuppMatrix(m); float dx 0, dy 0; switch (keyCode) { case KeyEvent.KEYCODE_DPAD_UP: dy -PAN_STEP; break; case KeyEvent.KEYCODE_DPAD_DOWN: dy PAN_STEP; break; case KeyEvent.KEYCODE_DPAD_LEFT: dx PAN_STEP; break; case KeyEvent.KEYCODE_DPAD_RIGHT: dx -PAN_STEP; break; case KeyEvent.KEYCODE_PLUS: photoView.setScale(photoView.getScale() * ZOOM_STEP, true); return true; case KeyEvent.KEYCODE_MINUS: photoView.setScale(photoView.getScale() / ZOOM_STEP, true); return true; default: return false; } m.postTranslate(dx, dy); return photoView.setDisplayMatrix(m); });真机连按方向键,图片跟着走;按 和 − 平滑缩放,到边界会被自动夹住,不会把图拉出屏幕。把焦点框画出来两米外看不见系统默认的浅淡高亮,焦点边框要自己画粗。selector xmlns:androidhttp://schemas.android.com/apk/res/android item android:state_focusedtrue shape android:shaperectangle stroke android:width4dp android:colorcolor/focused_color / corners android:radius8dp / /shape /item item shape android:shaperectangle stroke android:width0dp android:colorcolor/transparent / /shape /item /selector文件放进 res/drawable/,再给 PhotoView 加一行android:focusBackground指向它;焦点进来时 4dp 边框亮起,移开后边框消失。️ 让大图在 4K 屏上不卡大屏图片浏览里,分辨率一高,加载和翻页就是第一个瓶颈。现象:多图页启动时把所有远程图一次性拉下来,首帧要等很久。处理:等页面真要显示才发起网络请求,参考 Coil 示例页 中 Activity 创建时才load并开crossfade的做法。收益:首帧更快,后续翻页直接吃缓存。现象:浏览时间一长,内存越涨越高。处理:在 PagerAdapter 里用instantiateItem按需创建、destroyItem移除离屏视图,ViewPager 示例页 就是翻页时逐页移除 PhotoView 的。收益:连续翻页时内存保持平稳。现象:4K 屏上缩放动画掉帧。处理:开启硬件加速,给图片加载库设合理的内存缓存大小,大图先降采样到显示尺寸再解码。收益:缩放与平移动画保持流畅。❓ 遥控器按不动时,先查这五处焦点框不显示:确认focusable设了、focusBackground的 selector 在state_focused分支里画了东西;父容器若是自定义 ViewGroup,查它是否拦截了焦点。遥控器无响应:按键事件被父布局消费,或焦点根本不在 PhotoView 上。先把焦点挪到图片上,再检查监听里有没有return true。Back 键行为:默认 Back 直接退出。建议放大时按 Back 先复位——当前缩放不等于getMinimumScale()时调setScale(getMinimumScale(), true),已复位再按才退出。大图加载慢:网络图走加载库并降采样,加载中用占位图顶着,别让用户对着黑屏等。多机型翻车:至少找一台 1080p 和一台 4K 的电视(或用 TV 模拟器改分辨率),把下面的验收动作完整走一遍。照着打勾的验收动作运行 sample 模块的 LauncherActivity,按遥控器 OK 键,示例列表应能选中并进入。电视主页应用列表里能找到该应用,说明 leanback 特性声明生效。进入 Simple Sample 页面,按上下左右方向键,图片应跟着平移。放大状态下按 和 −,图片应平滑缩放且不出屏。焦点移到 PhotoView 上,边框应亮起;焦点移开,边框消失。放大后按 Back,应先复位到适配大小,再按一次才退出页面。连续翻页六张,观察内存曲线应基本平稳,翻页不掉帧。在 1080p 与 4K 各一台设备上重复以上动作,焦点大小和图片清晰度应正常。家庭相册应用要的是放大看细节,商业展示屏要的是翻页稳、焦点看得清。清单里这些动作走一遍,PhotoView 在电视上就真正能用起来。【免费下载链接】PhotoViewImplementation of ImageView for Android that supports zooming, by various touch gestures.项目地址: https://gitcode.com/gh_mirrors/ph/PhotoView创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

博客目录~
博客目录~

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

记录一些小细节
记录一些小细节

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

ffmpeg编解码过程中AVCodecContex的作用分析
ffmpeg编解码过程中AVCodecContex的作用分析

主要内容 本章主要内容就是讲解ffmpeg中实现硬件加速的代码的AVCodecContext的讲解内容,主要是基于ffmpeg 4.0代码进行分析。以下流程以h264硬件编解码为例。 硬件解码过程中AVCodecContext的变化 用户设置AVCodecContext项目成员函数类型说明(description)hw_devic… · 2026/11/3 4:18:32

之前考的证在外省能不能转过来?报建要电工证值不值得考
之前考的证在外省能不能转过来?报建要电工证值不值得考

之前考的证在外省能不能转过来?报建要电工证值不值得考 之前考的证在外省能不能转过来?这个问题我听得太多了,特别是那些在工地、工厂、建筑工地转岗的兄弟姐妹,你们可能也在问:我手里这张电工证,在老家考的,现在在外地上班, 报建要电工证… · 2026/11/11 13:21:36

安监规定电工作业人员必须知道的上岗必备信息
安监规定电工作业人员必须知道的上岗必备信息

安监规定电工作业人员必须知道的上岗必备信息 你是不是刚毕业就急着找工作?或者正在准备换工作?但用人单位一开口就问你有没有 特种作业操作证 ?这可不是开玩笑, 安监规定电工作业人员… · 2026/11/11 13:21:36

特种作业工的年终总结:多久拿证才能拿到手,别被中介坑了
特种作业工的年终总结:多久拿证才能拿到手,别被中介坑了

特种作业工的年终总结:多久拿证才能拿到手,别被中介坑了 不知道去哪报名怕被中介坑,这几乎是每个想考特种作业操作证的工友心里最怕的。今年我转岗到了平顶山的一家建筑工地,从电焊工转成高压电工,中间的弯路可不少,最头疼的就是证书的事。很多人以为拿… · 2026/11/11 13:21:36

特种作业工的年终总结:怎么通过官方报名入口拿到证,明年涨薪不愁
特种作业工的年终总结:怎么通过官方报名入口拿到证,明年涨薪不愁

特种作业工的年终总结:怎么通过官方报名入口拿到证,明年涨薪不愁 年底了,很多特种作业工都在盘算着自己的年终总结,但有个现实问题卡在心头: 急需特种作业证才能上岗找工作 。没有证,连面试资格都拿不到,更别提谈涨薪了。所以,… · 2026/11/11 13:21:36

柳州电工证哪里换证别怕学历低 网上查询搞定一切
柳州电工证哪里换证别怕学历低 网上查询搞定一切

柳州电工证哪里换证别怕学历低 网上查询搞定一切 学历不高怕报不上名?这事儿其实真不难,关键是你得知道怎么走流程。最近不少在柳州的朋友都在问【柳州电工证哪里换证】,其实只要流程清楚、资料齐全,学历并不是绊脚石。而且,现在连 网上查询… · 2026/11/11 13:21:36

特种信号工报名处值不值得考?鹤壁公路工程从业者必看的实操指南
特种信号工报名处值不值得考?鹤壁公路工程从业者必看的实操指南

特种信号工报名处值不值得考?鹤壁公路工程从业者必看的实操指南 急需特种作业证才能上岗找工作,特种信号工证到底值不值得考?作为鹤壁从事公路工程的你,可能正被这个问题困扰。特种信号工证不是“锦上添花”,而是“雪中送炭”,尤其是在项目现场、工地施… · 2026/11/11 13:20:36

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/11 12:18:07

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/10 17:46:39

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/10 17:11:43

_中职电工证最新政策解读
_中职电工证最新政策解读

中职电工证在哪考?工地太忙根本没时间复习考试的救星来了 工地太忙根本没时间复习考试,这是很多正在备考 中职电工证 的建筑工友的真实写照。你不是不想考,而是真的没时间。但别担心,这期内容是 新乡初次报考人员… · 2026/11/11 0:00:52

昆明电工证培训价格值不值得考?老电工告诉你真相
昆明电工证培训价格值不值得考?老电工告诉你真相

昆明电工证培训价格值不值得考?老电工告诉你真相 之前考的证在外省能不能转过来?这个问题是很多在外地打工、换城市生活、或者是想在昆明发展的朋友最关心的。尤其是现在云南发展快,很多企业都在招持证上岗的电工,如果你手头有证但不在本地,那这个证是不… · 2026/11/11 0:00:52

特种电缆张工网上查询全攻略:外省证如何转过来
特种电缆张工网上查询全攻略:外省证如何转过来

特种电缆张工网上查询全攻略:外省证如何转过来 之前考的证在外省能不能转过来?这是很多特种作业从业者最关心的问题,尤其是像特种电缆张工这类证书,直接关系到日常工作是否合规、能否顺利晋升。很多小伙伴因为证书归属地的问题,陷入职业发展的瓶颈,甚至… · 2026/11/11 0:00:52

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

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

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

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

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码