5 Star 8 Fork 5

Android TV 开源社区/LeanBack

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

#LeanBack

优化记录

特点

修改自 Lenaback源码.

一个适用于Android TV端的分页加载列表库,控件继承自RecyclerView,部分源码抽取自Google Support v17 Leanback包下源码,可兼容低版本环境。相比原始的RecyclerView,拥有以下特点

1.自动回焦至被选中的item;

2.item滚动居中;

3.焦点移动至边界位置时不会出现越界丢失焦点;

4.快速滑动和慢速滑动都不会出现丢焦现象;

5.支持分页加载;

6.支持移动边框.

7.支持多个垂直滚动.

源码分析

移动在中间分析

Leanaback GridViewLayoutManger.java 滚动在中间的分析

具体流程:

GridLayoutManager.java --> onRequestChildFocus ----> scrollToView ----> scrollGrid ----> mBaseGridView.scrollBy(scrollX, scrollY);

由于多个垂直,控件的父布局设置 tag="other"后,跑的流程不一样.

GridLayoutManager.java --> onRequestChildFocus ----> scrollOther

还可以使用 (这个方法有局限性,少的话可以使用,多的不建议使用)

ItemAlignmentFacet facet = new ItemAlignmentFacet();

ItemAlignmentFacet.ItemAlignmentDef alignDef1 = new ItemAlignmentFacet.ItemAlignmentDef();

facet.setAlignmentDefs(defs);

mRowPresenter.setFacet(ItemAlignmentFacet.class, facet);

一行高亮分析

ItemBridgeAdapter 设置监听事件.

ItemBridgeAdapter.AdapterListener mBridgeAdapterListener =

new ItemBridgeAdapter.AdapterListener() {

public void onCreate(ItemBridgeAdapter.ViewHolder viewHolder) {
setRowViewSelected(vh, false);
}

};
void setRowViewSelected(ViewHolder vh, boolean selected) {
((RowPresenter)vh.getPresenter()).setRowViewSelected(vh.getViewHolder(), selected);
}

空文件

简介

LeanBack源码分析记录 展开 收起
Android
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Android
1
https://gitee.com/kumei/LeanBack.git
git@gitee.com:kumei/LeanBack.git
kumei
LeanBack
LeanBack
master

搜索帮助

Cb406eda 1850385 E526c682 1850385