我有几个LinearLayouts在ScrollView中被下载的图像或文本填充。 LinearLayouts有一个适用于它们的LayoutAnimation,所以每一个在绘制时都会“滑入”到位。有没有办法强制屏幕外的LinearLayouts进行绘制,以便在用户滚动到它们时,动画已经完成?我已经试过测量像这样每个视图:(容器是一个ViewGroup)如何强制ViewGroup画出屏幕?
int measuredWidth = View.MeasureSpec.makeMeasureSpec(LayoutParams.FILL_PARENT, View.MeasureSpec.AT_MOST);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(LayoutParams.WRAP_CONTENT, View.MeasureSpec.UNSPECIFIED);
container.measure(measuredWidth, measuredHeight);
container.layout(0, 0, container.getMeasuredWidth(), container.getMeasuredHeight());
container.requestLayout();
但是他们仍然不会画,直到他们滚动(这通常是好的,但在动画使得它在显示在屏幕上。呃,不好)
我希望动画在视图组上显示填充下载的数据。这意味着如果当时在屏幕上,您会看到动画。如果当时不在屏幕上,则不会。此外,视图组可以以任何顺序,所以我不能假定某个视图组会在任何给定时间处于屏幕上或屏幕外。我认为最简单的方法就是强制他们在下载完成时画图,不管他们在哪里。至于第二部分 - 我尝试了container.invalidate(),但没有运气。我不能使用draw(),因为我没有可以引用的画布,只是viewgroups。 – wirbly 2011-04-29 02:10:05
只需在动画结束时删除动画。 – 2011-04-29 04:27:46
但是Android不会在屏幕上开始动画(在我的例子中是滚动到视图中),所以等到它结束为时已经太晚了,因为它已经被用户看到了。动画不会在屏幕外发生。 – wirbly 2011-04-29 13:43:28