Android 布局动画问题-无平滑滚动
我有一个带有文本视图、图像等的线性视图(a)和一个带有列表视图的滚动视图(B)。在列表视图上,我想降低图像的高度。当用户进入列表时,高度应减少到图像大小的一半。当用户向上滚动列表时,我希望将高度增加到原始高度 我已经成功地使用以下代码使其工作Android 布局动画问题-无平滑滚动,android,android-listview,android-animation,Android,Android Listview,Android Animation,我有一个带有文本视图、图像等的线性视图(a)和一个带有列表视图的滚动视图(B)。在列表视图上,我想降低图像的高度。当用户进入列表时,高度应减少到图像大小的一半。当用户向上滚动列表时,我希望将高度增加到原始高度 我已经成功地使用以下代码使其工作 if (scrolledUp) { int height = linearLayout.getMeasuredHeight(); int setHeight = height - scroll
if (scrolledUp) {
int height = linearLayout.getMeasuredHeight();
int setHeight = height - scrollValue;
linearLayout.getLayoutParams().height = setHeight;
linearLayout.requestLayout();
}
我面临的问题是,频繁调用requestLayout()会使scrollview的滚动速度非常慢,而且令人毛骨悚然。如何改进实现以使滚动更平滑?请参考此示例 在开发人员文档中,提到调用
requestLayout()
的频率较低:
另一个非常昂贵的操作是遍历布局。任何时候视图调用requestLayout(),Android UI系统都需要遍历整个视图层次结构,以确定每个视图需要多大。如果发现有冲突的度量,则可能需要多次遍历层次结构
您的代码的备选方案是:
getLayoutParams()
lp..height=setHeight代码>
setLayoutParams(lp)代码>
if (scrolledUp) {
int height = linearLayout.getMeasuredHeight();
int setHeight = height - scrollValue;
LinearLayout.LayoutParams lp = linearLayout.getLayoutParams();
lp.height = setHeight;
linearLayout.setLayoutParams(lp);
}
如果您不想使用lib,我建议您使用lib,看看您的代码在哪里出现问题!您是否尝试过移动A和B的位置而不是重新调整?setLayoutParams在内部调用requestLayout()。您是对的
setLayoutParams
调用requestLayout
,但在设置布局参数后调用requestLayout
是一种很好的做法。。参考