我有一个自定义的listView,它包含一个固定的标题和x数量的“向上推”视图,可以向上推并隐藏在列表视图的上方。
我有附图来解释他们。抱歉的“黑审查”,只是为了隐藏客户的标志等。
我的问题是,如果我添加一个填充到固定的标题视图,我将获得浮动在它后面的listview项。
固定的header视图的实现技术与搜索PinnedHeaderListView时使用的技术相同,即在列表视图中使用静态视图和Header。
我找到了一种启用填充的方法,即将与固定标头相同的填充应用于实际的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());
}
}首先,这里的图像显示了向上推送的标题

下面的图像显示了如何在填充的静态固定视图后面绘制内容。值得注意的是,如果我调整listView的填充,它会正常工作,但当它打开/关闭静态标题视图时,我会得到Jank (减速)。

发布于 2013-08-16 21:44:40
由于listView上的setPadding会导致布局调用,这将是非常无效的,特别是在具有复杂listView单元的情况下。一种解决方案是将背景图形添加到表示所需填充的固定标题。这意味着整个固定的标头是实心的。然后,列表视图的元素将绘制在此图形的后面。这就是我们最终得到的解决方案。
它可以工作,但最好是裁剪listView。
发布于 2012-08-24 03:45:06
关于你的问题需要更多的信息。
据我所知,Jank是由于你使用了大量的数据和绘图。
尝试为您的视图启用硬件加速。
有关硬件加速的更多信息,请尝试此http://developer.android.com/guide/topics/graphics/hardware-accel.html
https://stackoverflow.com/questions/11452130
复制相似问题