目录
1.leanback库的一些事
对于tv,谷歌也不怎么花精力,leanback在这方面的更新停了好久了,不过最近开始更新composetv库了.
从leanback的一些类在使用viewbinding有问题来看,就知道这库已经是末路了.这库最重大的特点是presenter,mvp模式与定制化的ui.
mvp怎么说呢?一堆接口除了让人越来越迷惑,我没有觉得它有什么好处,适用于非常小型的项目是好的,复杂一点就会把人累死.没有办法规范接口,页面一多,view的接口数量急剧膨胀,这种接口没有规范性可言,随便定义.到最后是无法维护.
关于leanback的ui,基本是限定死了,设置页,主界面的展示基本是定死的.
如果要单独把gridview拿出来,又无法使用它的动画.因为它是配套用的.不继承它的browserfragment这些,就会对焦点,动画,甚至排版方面都会有麻烦.
不过市场上倒是不少应用是按它的规范去设计的,我想有可能是因为谷歌市场不允许页面规范不符合它的规范才导致的结果.
对于国外市场,并不喜欢各种各样的表现,它们更注重内在,所以ui,动画长一样,没什么问题,leanback的设计本身也是不错的效果.但这套东西,对我们国内的开发者来说就比较痛苦了,基本没有人遵守.
非要搞一个顶部tab,这是常见的事.谷歌的交互方面是不错的,偏向简约.而且如果加上material的水波纹效果,还是非常好的.
2.leanback在使用时遇到的一些麻烦
视频卡片
首先,对于视频列表样式,里面用到了imagecard,如果不设置固定的高度,遇到中文,会有更高概率的焦点移动造成的高度变化.这时只要把整个view的高宽设置固定大小,或者运行时去修正就可以了.无法通过wrap的方式,尤其在第二行标题要时不时显示,隐藏的情况下,直接导致页面变形.
页面空白
如果不使用searchobs的情况下,就是不继承它的fragment,直接放一个gridview,要移除padding
在onviewcreated中可以调用
protected void removeTopPadding() {
VerticalGridView browseGrid = getBrowseGrid();
if (browseGrid == null) {
return;
}
browseGrid.setPadding(browseGrid.getPaddingLeft(), browseGrid.getPaddingTop() / 3, browseGrid.getPaddingRight(), browseGrid.getPaddingBottom());
}
移除padding,这样就不会只要中间显示了,焦点移动到第二行才能正常.
关于左侧菜单的一些设置
setHeadersState(HEADERS_ENABLED);//左侧菜单显示出来
setHeadersTransitionOnBackEnabled(true);//按后退键,焦点会回到左侧
int brandColorRes =