我有幾個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