2013-06-21 33 views
3

在Android中,我正在嘗試創建一個列表,其中的項目在點擊時更改高度,並且該項目下的所有視圖都會根據高度變化向上或向下動畫。在ListVIew中使用'更改'LayoutTransition類型沒有任何作用

LayoutTransition t = new LayoutTransition(); 
t.enableTransitionType(LayoutTransition.CHANGING); 
myLinearLayout.setLayoutTransition(t); 

然而,當我嘗試這個LayoutTransition應用到ListView,而不是一個LinearLayout中,單擊的項目動畫的高度:我一直在使用下面的代碼有一個的LinearLayout內物品名單「獲得了成功但是它下面的所有物品會立即跳到新的位置。我怎樣才能讓其餘的視圖與點擊項目一起動畫?

回答

1

你不能輕易做到這一點(並有更好的方法來做到這一點)。 ListView行的位置由AdapterView固定和控制。

我做了一點研究。首先,要激發CHANGING動畫,你不能像往常一樣刪除你的行(從適配器中刪除項目)。您必須通過將可見性設置爲GONE來隱藏您的項目,然後它將觸發DISAPPEARING動畫,然後觸發CHANGING動畫。但是要使CHANGING動畫可用,您必須在更改行高時隨時請求佈局(在ListView上)。在動畫結束時,您可以從適配器中刪除項目並重繪ListView。此外,您可以使行的ID與他們的位置穩定,以不重繪所有ListView。我試圖這樣做,但在各種版本的Android API上出現了複雜問題。

最後,可以使用LayoutTransition在ListView上實現動畫,但這從實現的角度來看很複雜並且不值得。這對於簡單的情況已經足夠了,但對於ListView中更復雜的動畫並不適用。要實現動畫,最好使用已熟化的組件: https://github.com/nhaarman/ListViewAnimations

相關問題