当前位置: 首页 > news >正文

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,也可以设置放大缩小的动态图

http://www.lryc.cn/news/347897.html

相关文章:

  • python篇-cmd 执行pip命令失败,但执行pyhon命令正常
  • Redis系列-3 Redis缓存问题
  • 【数据结构】堆(Heap)
  • vue cli 自定义项目架子,vue自定义项目架子,超详细
  • flink cdc,读取datetime类型
  • Kotlin 编译器和工具链:深入解析与实践案例
  • kettle
  • Maven 自动化构建
  • Unicode字符集和UTF编码
  • echarts默认图例(横线+圈圈)
  • Shell脚本的基础和变量
  • VRRP协议-负载分担配置【分别在路由器与交换机上配置】
  • 商务分析方法与工具(十):Python的趣味快捷-公司财务数据最炫酷可视化
  • 思源笔记如何结合群晖WebDav实现云同步数据
  • Electron Forge | 跨平台实战详解(中)
  • stable diffusion教程
  • 音频文件分析-- whisper(python 文档解析提取)
  • Python深度学习基于Tensorflow(3)Tensorflow 构建模型
  • 火爆多年的抖音小店,2024年想要入驻需要什么条件呢?
  • STM32G030C8T6:EEPROM读写实验(I2C通信)
  • 使用Git管理github的代码库-上
  • 经典文献阅读之--D-Map(无需射线投射的高分辨率激光雷达传感器的占据栅格地图)
  • 开源免费的定时任务管理系统:Gocron
  • 从零开始详解OpenCV车道线检测
  • 【Java代码审计】逻辑漏洞篇
  • SSH简介
  • Oracle的高级分组函数grouping和grouping_id
  • SqlServer 查询数据库 和 数据表 大小的语句
  • 特殊类的设计与单例模式
  • MySQL从入门到高级 --- 6.函数