2012-05-03 18 views
2

我有一個LinearLayout,它有兩個視圖,彼此相鄰。當點擊一個視圖時,它將動畫顯示爲全屏。這正好罰款右側的觀點,但它不能爲左視圖:Android:如何將動畫帶到前面:bringToFront和zAdjustment/Z排序

我無法動畫右側視圖

頂部的左視圖,而無需與bringToFront破壞我的佈局() 。調整我的動畫的Z順序似乎不起作用。

不是一個解決方案:當我在左視圖中使用「brintToFront()」時,問題消失了,但是這會導致我的佈局完全被破壞,並且沒有brintToBack()函數或任何其他方法。 => brintToFront =不是一個好的解決方案?

調整我的動畫的Z順序似乎不起作用(不會改變任何東西)。

scaleAnimation.setZAdjustment(Animation.ZORDER_TOP); 
translateAnimation.setZAdjustment(Animation.ZORDER_TOP); 
AnimationSet set = new AnimationSet(true); 
set.addAnimation(scaleAnimation); 
set.addAnimation(translateAnimation); 
set.setZAdjustment(AnimationSet.ZORDER_TOP); 
myFrameLayout.startAnimation(set); 

爲什麼Z排序不能按預期工作? 有誰知道這個問題的解決方案?

+0

沒有答案?任何事情都可以將我指向正確的方向? – Frank

+0

我沒有修正,但我在其他地方看到,動畫的Z調整僅對窗口動畫有影響,儘管這沒有記錄。 –

+1

這看起來像是一個基本的疏忽,我現在正在努力拼搏。我對這個動畫包非常反感。這只是一個整個方面的鬥爭,我完全生氣。拉屎! –

回答

6

如果你擴展的LinearLayout和重寫以下這應該是可能的方法:

getChildDrawingOrder (int childCount, int i) 

要確保佈局使用你的函數,你需要調用setChildrenDrawingOrderEnabled(真)

ViewGroup javadoc

1

我想這沒有什麼好的答案。

我現在也在屏幕上爲其他所有內容設置了動畫,所以如果視圖1必須在視圖2的頂部變得比視圖2更大,那麼看起來像視圖1在視圖2,而實際上視圖2越來越小,而視圖1越來越大。

相當多的工作和一個不好的解決方案,但我想唯一的解決方案。

3

爲您ž重新排序將應用你會需要在視圖要求一個新的佈局,但嘗試啓動動畫之前做:

AnimationSet set = new AnimationSet(true); 
// init animation ... 
scaledView.bringToFront(); 
scaledView.requestLayout(); 
myFrameLayout.startAnimation(set);