针对Android TV端使用的自定义RecyclerView
来源:互联网 发布:网络安全技术分析论文 编辑:程序博客网 时间:2024/06/05 16:59
在Android TV中开发, 需要处理焦点的移动, 为了达到醒目的作用一般都会添加焦点移动动画和焦点选中放大效果, 为了方便在TV端使用RecyclerView, 故自定义TvRecyclerView来实现焦点选中与移动的效果.
效果如下:
一. TvRecyclerView使用
(1) 在布局中添加 TvRecyclerView
<app.com.tvrecyclerview.TvRecyclerView android: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() { @Override public void onItemViewClick(View view, int position) { Toast.makeText(NormalFocusActivity.this, ContantUtil.TEST_DATAS[position], Toast.LENGTH_SHORT).show(); } @Override public 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开发之RecyclerView的使用以及自动加载
- android TV开发之RecyclerView的使用以及自动加载
- 电视TV端使用RecyclerView开发遇到的问题
- TV端使用RecyclerView时遇到的问题
- AndroidTV开发(十一)Android Tv Launcher自定义RecyclerView
- AndroidTV开发(十一)Android Tv Launcher自定义RecyclerView
- Android TV横向滚动网格布局——RecyclerView的使用
- Android TV中使用RecyclerView长按或者连续按键焦点飞掉的问题
- Android Tv电视机盒子使用Recyclerview实现飞框动画
- Android TV横向滚动实现Launcher的RecyclerView第二弹
- Android TV RecyclerView焦点移动飞框的实现
- RecyclerView在TV使用中碰到的问题和解决方案
- Android TV 上使用的RecyclerView和焦点框架,焦点框移动效果,完胜androidTvwidget的MainUpView
- android中RecyclerView使用自定义的列表布局
- Android -- RecyclerView的使用
- Android RecyclerView的使用
- Android RecyclerView的使用
- 呵呵呵呵多线程
- 求集合的子集
- new Integer(text).intValue()的用法
- android学习初体验-环境配置
- 【Leetcoad】Leetcoad涉及算法总结
- 针对Android TV端使用的自定义RecyclerView
- 利用SVG path绘制图形--命令
- leetcode 4. Median of Two Sorted Arrays
- HMM
- SVG简单搞一波
- mtk lcm驱动流程
- 微信小程序:wx.downloadFile 不成功,没报错 downloadFile:fail Error: socket hang up 错误
- mybatis-generator生成通用mapper中文乱码解决
- 第100002(十万零二)个素数是多少