hav*_*chr 10 android listview lag
我有一个自定义listView,其中包含一个固定标题和x个"俯卧撑"视图,可以向上推并隐藏在列表视图上方.
我附上图片来解释它们.对不起"黑色审查",只是为了隐藏客户的标识等.
我的问题是,如果我在固定的标题视图中添加填充,我将在它后面浮动listview项.
如果您搜索PinnedHeaderListView,即列表视图中的静态视图和标题,则使用与您将找到的相同技术实现固定标题视图.
我找到了一种方法来启用填充,即通过将固定标头应用相同的填充到实际的listView,但只有当静态标头可见时.
但是,调用setPadding会导致一个非常明显的Jank,我想删除它.有谁知道如何删除这个jank?
我有一个简单的视图和虚拟数据的简单应用程序,它没有显示这个jank,所以可能jank的数量取决于单元格布局的复杂性.
private void updateIfShouldShowStaticHeaderView() {
//unfortunately setting the padding of the listView causes JANK.
//any ideas?
int bottomOfFloatingHeader = floatingHeader.getBottom();
if (bottomOfFloatingHeader < mHeaderViewHeight) {
staticHeaderViewIsVisible = true;
staticHeader.setVisibility(View.VISIBLE);
//need to set padding of listView to avoid having list-view items float behind my padded static header
setPadding(0, staticHeader.getPaddingTop(), 0, getPaddingBottom());
} else {
staticHeaderViewIsVisible = false;
staticHeader.setVisibility(View.INVISIBLE);
//need to set padding of listView to avoid having list-view items float behind my padded static header
setPadding(0, 0, 0, getPaddingBottom());
}
}
Run Code Online (Sandbox Code Playgroud)
首先是显示推升标题的图像

这是一张图片,展示了如何在填充的静态固定视图后面绘制内容.值得注意的是,如果我调整listView的填充,它的工作方式是有意的,但是当它打开/关闭静态标题视图时,我会得到Jank(减速).

由于 listView 上的 setPadding 会导致布局调用,因此效率非常低,尤其是在 listView 单元格复杂的情况下。解决方案是将背景图形添加到代表所需填充的固定标题中。这意味着整个固定的标头是坚固的。然后列表视图的元素将绘制在该图形后面。这就是我们最终得到的解决方案。
它可以工作,但最好剪辑 listView。
| 归档时间: |
|
| 查看次数: |
1214 次 |
| 最近记录: |