2012-08-28 11 views
23

私はサポートライブラリを使用しています。今、私は、前のものを超えて動いて、断片を下からシフトしたいと思っています。フラグメント、android:z調整(zオーダー)とアニメーション

<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromAlpha="1.0" android:toAlpha="1.0" 
    android:duration="2500" 
    android:zAdjustment="bottom" /> 

この新しいフラグメントのために使用されるアニメーションが摺動することである:私は、新しいフラグメントがその場所になるまで目に見える前断片(にわたって摺動されているもの)を維持するためにこれを使用するこのため

下から中:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromYDelta="100%p" android:toYDelta="0" 
     android:duration="@android:integer/config_mediumAnimTime" 
     android:zAdjustment="top"/> 

私は両方のための下部と上部にzの調整を入れてきましたが、それでも「ボトム」のアニメーションは、新しいフラグメントの上に残っています!私はテストのために期間を2500にして、それは全体の時間の上にとどまります。

フラグメントアニメーションでzAdjustmentは機能しませんか?

+0

以前のフラグメントを強制的に表示されるフラグメントの下に表示する方法はありますか? –

+0

私はこの作業をするために何をしたのか分かりません。私のコードをチェックする必要がありますが、現時点では不可能です。 – Boy

+1

フラグメントアニメーションのZ-インデックスをどこかで調整できますか?もしあなたが私たちと分かち合うなら、それは非常に役に立ちます。 – cprcrack

答えて

9

thisによると、GoogleグループのスレッドZ調整はウィンドウアニメーションでのみ機能します。

"Z調整はウィンドウアニメーションでのみ機能しますが、これは文書化されていると思われましたが、明らかにそうではありませんでした。 - Dianne Hackborn(Androidフレームワークエンジニア)

+9

何が可能な回避策はありますか? – Marchy

3

私もこの問題を抱えています。代わりにtransaction.replace(containerId, newFragment)を使用するだから私は、フラグメントのための2つのコンテナを作成しましたし、この1

は最初のフラグメントを追加しますように、今、私のコードでは、なります

transaction.add(containerId1, firstFragment).commit(); 

は、最初の1上のアニメーションと第2のフラグメントを追加します。

findViewById(containerId2).bringToFront(); 
transaction.setCustomAnimations(R.anim.slide_in_up, 
R.anim.stay).remove(oldFragment).add(containerId2, newFragment).commit() 
関連する問題