针对Android TV端使用的自定义RecyclerView
在Android TV中开发, 需要处理焦点的移动, 为了达到醒目的作用一般都会添加焦点移动动画和焦点选中放大效果, 为了方便在TV端使用RecyclerView, 故自定义TvRecyclerView来实现焦点选中与移动的效果.
效果如下:
一. TvRecyclerView使用
(1) 在布局中添加 TvRecyclerView
<app.com.tvrecyclerview.TvRecyclerViewandroid:id="@+id/tv_recycler_view"android:layout_width="match_parent"android:layout_height="580dp"app:focusDrawable="@drawable/default_focus"/>
(2) 设置TvRecyclerView的layoutManager和Adapter
mTvRecyclerView = (TvRecyclerView) findViewById(R.id.tv_recycler_view);GridLayoutManager manager = new GridLayoutManager(NormalFocusActivity.this, 3);manager.setOrientation(LinearLayoutManager.HORIZONTAL);mTvRecyclerView.setLayoutManager(manager);int itemSpace = getResources().getDimensionPixelSize(R.dimen.recyclerView_item_space);mTvRecyclerView.addItemDecoration(new SpaceItemDecoration(itemSpace));NormalAdapter mAdapter = new NormalAdapter(NormalFocusActivity.this);mTvRecyclerView.setAdapter(mAdapter);mTvRecyclerView.setOnItemStateListener(new TvRecyclerView.OnItemStateListener() {@Overridepublic void onItemViewClick(View view, int position) {Toast.makeText(NormalFocusActivity.this,ContantUtil.TEST_DATAS[position], Toast.LENGTH_SHORT).show();}@Overridepublic void onItemViewFocusChanged(boolean gainFocus, View view, int position) {}});mTvRecyclerView.setSelectPadding(35, 34, 35, 38);
TvRecyclerView的使用与标准的RecyclerView相同.
二. TvRecyclerView属性介绍
TvRecyclerView提供了以下几个属性:
<attr name="scrollMode"/><attr name="focusDrawable" format="reference" /><attr name="isAutoProcessFocus" format="boolean" /><attr name="focusScale" format="float" />
(1) scrollMode控制TvRecyclerView的滑动模式, TvRecyclerView的滑动模式有两种:
① normalScroll: 默认情况下是这种模式, 当TvRecyclerView是这种模式时, 当焦点滑动到的view是没有全部显示出来的, TvRecyclerView将会向按键的方向滑动屏幕一半的距离.
②followScroll: 当TvRecyclerView是这种模式时, 当焦点滑动到view在屏幕当中就一直滑动, 效果与android Tv上的HorizontalGridView差不多. 对应图2.
(2) focusDrawable 设置选择的Drawable, 如图一的白色选择框, 默认是没有设置, 想要这种效果需要设置此属性或在代码中设置.
(3) isAutoProcessFocus 控制焦点处理是由谁来做, 默认焦点由TvRecyclerView来处理.
当isAutoProcessFocus 为false, 子view是可以获得焦点的, 当isAutoProcessFocus为true, 子view获取
不到焦点, 焦点由TvRecyclerView来处理.
(4)focusScale 设置选中view时, view的放大系数. 大于1.0f才生效.
具体的使用方法可以参考源码中的例子.
TvRecyclerView的使用与源码从这里TvRecyclerView获取.
针对Android TV端使用的自定义RecyclerView相关推荐
- 针对Android Tv的自定义RecyclerView2 0横竖向连动
版权声明:本文为博主原创文章,转载请注明出处. 推荐: 欢迎关注我创建的Android TV 简书专题,会定期给大家分享一些AndroidTv相关的内容: www.jianshu.com/c/37ef ...
- ipad android tv,先河私有云持续大动作:继iPad/Android TV端/系统分享功能后,还有新玩法?...
原标题:先河私有云持续大动作:继iPad/Android TV端/系统分享功能后,还有新玩法? 由5.1劳动节伊始,勤劳的先河小蜜蜂们(先河研发人员)可是忙疯了! 首先是经过连日来的挑灯夜战,5月18 ...
- Android Tv端仿优酷酷喵——播放界面下拉弹出选项窗
自己写了一个Andorid TV端动画实例,主要是仿优酷酷喵里的下拉弹窗的效果,如下图: 这里把弹框写成了一个弹出的dialog,把dialog的背景设成黑色半透明,然后在activity中监听下键弹 ...
- android tv 帮助,android TV端各类焦点问题
1. android:focusable与android:focusableInTouchMode 前者针对在键盘下操作的情况,如果设置为true,则键盘上下左右选中,焦点会随之移动. 而后者,显然是 ...
- android TV端如何读取微信网页版二维码显示生成一张图片
今天讲下TV端接二维码遇到的一些问题,由于是在微信平台申请的是以网站那种形式申请的,而不是服务号申请的,所以客户端显示的二维码是以网页的形式展现的,网页是用WebView加载实现的,但是我们的界面是这 ...
- android TV端app开发的踩坑之旅
android studio 出现已久,而种种原因,android开发还是一直使用的eclipse,近几日熟悉android studio,遇到不少问题,相信以后也会遇到不少问题.本着雁过留痕.摔了跟 ...
- Android TV 开发简介
[原文](http://www.tuicool.com/articles/IJnQRz) 0.概述 智能电视近两年可谓发展迅猛,据艾瑞咨询数据显示,2015年国内智能电视终端销售量将达到3556.8万 ...
- android tv key事件,Android TV中按键事件和焦点处理总结
本文总结了Android TV开发中的按键事件和焦点处理,TV端的开发不同于手机开发,主要区别在于焦点的处理,常常会用到手机端很少用到的开发接口.了解这些不同的接口和区别,有助于很快的上手TV端的开发 ...
- Android TV中按键事件和焦点处理总结
本文总结了Android TV开发中的按键事件和焦点处理,TV端的开发不同于手机开发,主要区别在于焦点的处理,常常会用到手机端很少用到的开发接口.了解这些不同的接口和区别,有助于很快的上手TV端的开发 ...
最新文章
- [转载]WebForm下使用 jQuery.loadUserControl异步load用户控件
- Apache Kafka-初体验Kafka(01)-入门整体认识kafka
- 【Machine Learning】决策树之ID3算法 (2)
- 音视频技术开发周刊 | 191
- android webview ios uiwebview和wkwebview的交互以及本地缓存
- 作业调度问题java代码_Tabu Search求解作业车间调度问题(Job Shop Scheduling)-附Java代码...
- 【LeetCode - 1254】统计封闭岛屿的数目(dfs,连通块)
- android字符串复制到剪贴板
- 关于xp操作系统下使用VC6++编写的上位机软件在win10中运行的问题
- Linux上的errno和strerror
- 中国大陆IP过滤器-Java实现
- java毕业生设计学生实验报告管理系统计算机源码+系统+mysql+调试部署+lw
- iPhone配置实用工具
- 考华为云认证的注意事项、认证费用
- 音创点歌机_音创ktv点歌系统
- arm板linux内核移植,ARM开发板上uClinux内核移植
- 安卓APP自动更新实现
- 读书笔记--家庭教育1
- 如何搭建一个自己的图床
- 单链表的算法之尾部插入节点
热门文章
- 千寻位置 开发demo_专攻高精定位解决方案,「千寻位置」要解决自动驾驶车辆“我在哪儿”的问题...
- 获取mysql 自增id 和mysql 下一个自增id的方法
- PTA(每日一题)7-75 某校几人
- 详细的FFmpeg编译流程与脚本分析
- 扩增子16S分析专题研讨论会——背景介绍
- 如何控制弹出窗口的大小、尺寸、位置等的样式
- Android摄像头调用失败问题
- mysql join 自联结_MySQL JOIN | 联结
- Google支付常见错误
- 电商系统中微服务体系中的分层设计和领域划分