#LeanBack
优化
当垂直的RecyclerView过多的时候会有一些卡顿.
修改自 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);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。