android TV app适配遥控器思路,recycleview选中放大
背景:
1、当遥控器遥控盒子,app内是有一套机制,响应遥控器的操作;
2、要实现遥控器选中的效果,必须要设置setOnFocusChangeListener方法,另外一个就是设置view的setOnClickListener方法;设置完之后,就可以直接有遥控器选中的状态;
需要做的就是:
1、activity中,普通view的处理:
直接监听该view的“setOnFocusChangeListener”方法,如下:
imgTitle.setOnFocusChangeListener(this);实现方法处理:@Overridepublic void onFocusChange(View view, boolean hasFocus) {if (hasFocus) {//获焦后放大1.2倍ViewCompat.animate(view).scaleX(1.1f).scaleY(1.1f).translationZ(1.1f).start();} else {//丢失焦点后缩回正常ViewCompat.animate(view).scaleX(1.0f).scaleY(1.0f).translationZ(1.0f).start();}}
这样就可以响应遥控器的操作了,并且还有失去、获取焦点,view放大缩小的动画;
view的背景,都添加一个draw的xml,如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_focused="true"><shape><corners android:radius="3dp" /><stroke android:width="3dp" android:color="@color/white" /><solid android:color="@color/transparent" /><padding android:top="3dp"android:bottom="3dp"android:left="3dp"android:right="3dp"/></shape></item><item android:state_focused="false"><shape><corners android:radius="3dp" /><stroke android:width="1dp" android:color="@color/transparent" /><solid android:color="@color/transparent" /></shape></item>
</selector>
2、activity中,是recycleview时,应该如下处理:
先设置监听,
recyclerViewTop.setOnFocusChangeListener(this);
再将adapter中的item布局中,只设置一个view的focusable是true,其他的都设置成false,这样,遥控器就可以进行选择了,同时遥控器中的ok键,就是click事件;
布局如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="200dp"><ImageViewandroid:id="@+id/item_img_left_line"android:layout_width="15dp"android:focusable="false"android:layout_height="1dp"/><ImageViewandroid:id="@+id/item_img_top_line"android:layout_width="1dp"android:layout_height="15dp"android:focusable="false"/><RelativeLayoutandroid:id="@+id/item_layout_main"android:layout_width="wrap_content"android:layout_height="105dp"android:layout_toRightOf="@id/item_img_left_line"android:layout_below="@id/item_img_top_line"android:focusable="false"android:background="@color/green"><ImageViewandroid:id="@+id/item_img_background"android:layout_width="match_parent"android:layout_height="105dp"android:background="@drawable/btn_blue_round_line_selector"android:focusable="true"/><TextViewandroid:id="@+id/item_tv_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:text="@string/app_name"android:textSize="16sp"android:textColor="@color/white"android:layout_alignParentBottom="true"android:layout_marginBottom="10dp"android:focusable="false"/></RelativeLayout></RelativeLayout>
在activity中,需要对遥控器,做特殊监听的,以下:
@Overridepublic boolean dispatchKeyEvent(KeyEvent event) {int keyCode = event.getKeyCode();int action = event.getAction();return handleKeyEvent(action, keyCode)||super.dispatchKeyEvent(event);}private boolean handleKeyEvent(int action, int keyCode) {if (action != KeyEvent.ACTION_DOWN)return false;switch (keyCode) {case KeyEvent.KEYCODE_ENTER:case KeyEvent.KEYCODE_DPAD_CENTER://确定键enterbreak;case KeyEvent.KEYCODE_DPAD_DOWN://向下键break;case KeyEvent.KEYCODE_DPAD_UP://向上键break;case KeyEvent.KEYCODE_DPAD_LEFT://向左键break;case KeyEvent.KEYCODE_DPAD_RIGHT://向右键break;default:break;}return false;}
Recycleview中的itemview,也可以设置放大缩小的动态图
相关文章:
android TV app适配遥控器思路,recycleview选中放大
背景: 1、当遥控器遥控盒子,app内是有一套机制,响应遥控器的操作; 2、要实现遥控器选中的效果,必须要设置setOnFocusChangeListener方法,另外一个就是设置view的setOnClickListener方法;设置完之后&#…...
python篇-cmd 执行pip命令失败,但执行pyhon命令正常
当你在CMD中可以正常执行python命令,但执行pip命令失败时,这通常意味着pip没有被正确地添加到系统的环境变量中。这里有一些步骤来解决这个问题: 检查环境变量: 打开系统的环境变量设置(右击“此电脑”>“属性”>…...
Redis系列-3 Redis缓存问题
1.缓存的作用 数据库(如Mysql)的持久化特点带来了较低的性能,高并发的场景下,连接池很快被耗尽而出现宕机或DOS,无法继续对外提供服务。相对于数据库的硬盘IO,缓存中间件基于内存进行读写,从而具备较大的吞吐量和高并…...
【数据结构】堆(Heap)
文章目录 一、堆的概念及结构二、堆的实现1.向上调整算法2.向下调整算法3.堆的创建4.堆的插入5.堆的删除6.堆的其他操作 三、堆的应用1.堆排序2.Top-K问题 一、堆的概念及结构 堆(Heap)是一种特殊的非线性结构。堆中的元素是按完全二叉树的顺序存储方式存储在数组 中。满足任意…...
vue cli 自定义项目架子,vue自定义项目架子,超详细
脚手架Vue CLI基本介绍: Vue CLI 是Vue官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子【集成了webpack配置】 脚手架优点: 开箱即用,零配置内置babel等工具标准化的webpack配置 脚手架 VueCLI相关命令…...
flink cdc,读取datetime类型
:flink cdc,读取datetime类型,全都变成了时间戳 Flink CDC读取MySQL的datetime类型时会转换为时间戳的问题,可以通过在Flink CDC任务中添加相应的转换器来解决。具体来说,可以在MySQL数据源的debezium.source.converter配置项中指…...
Kotlin 编译器和工具链:深入解析与实践案例
Kotlin 编译器和工具链是构建 Kotlin 项目的核心组件,它们负责将 Kotlin 代码转换为可在 JVM 或 JavaScript 环境中运行的代码。本文将详细介绍 Kotlin 编译器和工具链的工作原理、使用方法,以及在实际开发中的应用案例。 1. 引言 Kotlin 作为一种现代…...
kettle
文章目录 读取共享数据库连接报错 读取共享数据库连接报错 读取共享数据库连接报错 解决方法:修改共享文件中的中文字符,文件位置一般是默认的:C:\Users\Administrator.kettle。将shared.xml文件中的中文字符改成英文后问题就解决了。...
Maven 自动化构建
优质博文:IT-BLOG-CN 一、Maven:是一款服务于 Java平台的自动化构建工具 【1】Maven可以将一个项目按模块划分成不同的工程,利于分工协作; 【2】Maven可以将 jar包保存在自己的中央“仓库”中进行统一管理,有需要使用的工程引用这…...
Unicode字符集和UTF编码
文章目录 前言一、字符集和编码方式二、unicode字符集utf32编码utf8编码utf8编码函数示例utf8解码函数示例 utf16编码utf16编码解码函数示例 总结 前言 本文详细介绍 u n i c o d e unicode unicode 字符集和其相关的三种编码方式: u t f 8 utf8 utf8,…...
echarts默认图例(横线+圈圈)
修改echarts 图例样式 项目里折线图需要去掉圆点, 但是图例样式需要是默认样式(横线和圈圈) 原始代码:(只展示series 和legend配置 ) series: [{name: chartObj.names[ind_one],yAxisIndex: yIndex,type: ele_one,barMaxWidth: 15,tooltip: {show: true},data: chartObj.yAx…...
Shell脚本的基础和变量
1.shell脚本基础 1.1 shell的作用 Linux 系统中的 Shell 是一个特殊的应用程序,它介于操作系统内核与用户之间,充当 了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执 行的…...
VRRP协议-负载分担配置【分别在路由器与交换机上配置】
VRRP在路由器与交换机上的不同配置 一、使用路由器实现负载分担二、使用交换机实现负载分担一、使用路由器实现负载分担 使用R1与R2两台设备分别进行VRRP备份组 VRRP备份组1,虚拟pc1的网关地址10.1.1.254 VRRP备份组2,虚拟pc2的网关地址10.1.1.253 ①备份组1的vrid=1,vrip=…...
商务分析方法与工具(十):Python的趣味快捷-公司财务数据最炫酷可视化
Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博客的话,记得…...
思源笔记如何结合群晖WebDav实现云同步数据
文章目录 1. 开启群晖WebDav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar4. 配置远程同步地址5. 笔记远程同步测试6. 固定公网地址7. 配置固定远程同步地址 在数字化时代,信息的同步与共享变得尤为重要。无论是个人用户还是企业团队,都渴望能够实现跨…...
Electron Forge | 跨平台实战详解(中)
简介 上篇 介绍了 Electron 和 Electron Builder 的基本用法,本篇将介绍更常用也更方便的打包工具,Electron Forge 。 Electron Forge 是一个为 Electron 应用的开发、打包和分发而设计的全功能工具集。它整合了多个底层 Electron 工具到一个统一的命令…...
stable diffusion教程
Stable Diffusion 是一种流行的图像生成模型,它可以根据文本提示生成高质量的图片。如果你想了解如何使用 Stable Diffusion,这里有一些基本的步骤和资源,可以帮助你开始使用: ### 1. 安装 Stable Diffusion 首先,你需…...
音频文件分析-- whisper(python 文档解析提取)
使用whisper转文本,这里使用的是large-v3版本 pip install githttps://github.com/openai/whisper.git import whisper import os from tqdm import tqdmmodel whisper.load_model("large-v3")path "rag_data" for fi in tqdm(os.listdir(pa…...
Python深度学习基于Tensorflow(3)Tensorflow 构建模型
文章目录 数据导入和数据可视化数据集制作以及预处理模型结构低阶 API 构建模型中阶 API 构建模型高阶 API 构建模型保存和导入模型 这里以实际项目CIFAR-10为例,分别使用低阶,中阶,高阶 API 搭建模型。 这里以CIFAR-10为数据集,C…...
火爆多年的抖音小店,2024年想要入驻需要什么条件呢?
大家好,我是电商糖果 我相信现在只要会上网的年轻人,对抖音小店一定不会感觉陌生。 它最近几年的风头,可是远远超过某宝,某多多了。 不少抖音用户也有了在抖音购物的习惯,现在的抖音上入驻了上百万家电商商家。 这…...
别再只会调占空比了!STM32F103驱动L298N电机,PWM模式1和模式2到底怎么选?
STM32F103驱动L298N电机:PWM模式1与模式2的深度实战解析 当你在调试L298N电机驱动模块时,是否遇到过这样的困惑:明明设置了相同的占空比,电机却表现出截然不同的响应特性?这背后往往隐藏着PWM模式选择的奥秘。对于STM3…...
基于LangChain构建AI智能体:从核心架构到生产部署实战
1. 项目概述与核心价值最近在GitHub上看到一个名为“GenAI_Agents”的项目,作者是NirDiamant。这个项目名本身就很有意思,它直指当前AI领域最火热、也最具想象力的方向之一:智能体(Agents)。简单来说,这个项…...
Codex自主规划开发工作流实践 Codex CLI、AI编程、自动规划开发、Agent工作流、长任务AI开发、CodexLoop
Codex自主规划开发工作流实践 Codex CLI、AI编程、自动规划开发、Agent工作流、长任务AI开发、CodexLoop 老规矩 先放最新地址: Codex 最新官方客户端下载地址 https://codexdown.cn/ 最近在折腾一件很有意思的事情: 不再给 Codex 写“超详细步骤”&…...
面试题详解:检索链路设计全攻略——RAG 检索架构、查询理解、多路召回、混合检索、Rerank、上下文构造与评估闭环
1. 为什么说检索链路设计,是 RAG 项目的“生命线”?1.1 大模型回答质量,很多时候不是模型决定的,而是证据决定的在 RAG 系统里,大模型像一个会组织语言的“回答器”,但它能不能答准,取决于它面前…...
终极英雄联盟工具箱:5个核心功能快速提升你的游戏体验
终极英雄联盟工具箱:5个核心功能快速提升你的游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款专为英雄…...
SDXL动画生成实战:AnimateDiff与Hotshot-XL效果对比与配置详解
1. SDXL动画生成工具概览 最近在玩SDXL动画生成的朋友应该都听说过AnimateDiff和Hotshot-XL这两款神器。作为目前最主流的两个文生视频开源工具,它们都能基于SDXL模型将静态图片转换成动态视频。不过在实际使用中,我发现两者的效果差异还挺明显的。 先说…...
隐私优先的本地数据处理:浏览器Cookie逆向工程解密
隐私优先的本地数据处理:浏览器Cookie逆向工程解密 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 🔍 颠覆性认知ÿ…...
VCS仿真总失败?手把手教你用TMAX的CPV功能快速定位ATPG Pattern问题
VCS仿真总失败?TMAX的CPV功能实战指南:精准定位ATPG Pattern问题 在数字芯片验证的战场上,ATPG(自动测试模式生成)仿真是确保芯片可测试性的关键环节。但当VCS仿真器抛出"cycle mis-match"错误时,…...
EVA-7M,支持GPS/GLONASS及低功耗省电模式的超紧凑型GNSS模块
简介今天我要向大家介绍的是 u-blox 的超紧凑型独立GNSS定位模块——EVA-7M。这是一款专为对成本和空间敏感的应用而设计的独立GNSS模块。该模块基于 u-blox 7 定位引擎(接收GPS、GLONASS、QZSS和SBAS信号)设计,采用行业最小的独立GNSS封装尺…...
【计算机网络硬核指南】子网划分终极篇:定长+VLSM+超网三合一实战(3道大厂真题逐字节演算)
【计算机网络硬核指南】子网划分终极篇:定长VLSM超网三合一实战(3道大厂真题逐字节演算) 前言 在上一篇文章中,我们系统学习了IP地址基础和子网划分的核心方法,逐题演算了9道经典真题。很多读者反馈说,看…...
