2015-11-19 95 views
1

當打開一個片段時,我需要添加一個動畫從底部向上滑動,然後當片段關閉時,它需要從屏幕向下滑動。片段向上滑動動畫不會顯示下面的片段

我在上滑的片段,這幾乎是工作下面的代碼:

public override Animator OnCreateAnimator (FragmentTransit transit, bool enter, int nextAnim) { 
     var display = this.Activity.WindowManager.DefaultDisplay; 
     var size = new Point(); 
     display.GetSize (size); 
     var displayHeight = size.Y; 

     var animator = enter ? 
      ObjectAnimator.OfFloat (this, "translationY", displayHeight, 0) : 
      ObjectAnimator.OfFloat (this, "translationY", 0, displayHeight); 
     animator.SetDuration (300); 
     return animator; 
    } 

周圍有滑動畫一個問題......它會立即顯示該片段的白色背景和操作欄(它不動畫),動作欄下面的內容確實滑動。這意味着當你看到內容背後的白色背景向上滑動時,你會失去將新片段下的前一個片段顯示爲向上滑動的效果。

向下滑動可正常工作,頂部的片段向下滑動,當滑落時,您可以看到它下面的片段。

這裏是打開的新片段,如果它是相關的代碼:

var transaction = activity.FragmentManager.BeginTransaction(); 
transaction.Replace (navigationContext.ContainerResourceId, fragment, fragment.Name); 
transaction.AddToBackStack (fragment.Name); 
transaction.Commit(); 

任何想法,我怎麼能正確地使滑動畫作品,展示了片段下方,因爲它向上滑動?

+1

昌替換添加transaction.add(navigationContext.ContainerResourceId,片段, fragment.Name); –

+0

Boom shackalacka!那樣做了......你可以重新發布這個答案,我會接受嗎? – Justin

回答

1

使用替換意刪除以前fragment。嘗試使用加:

var transaction = activity.FragmentManager.BeginTransaction(); 
transaction.add(navigationContext.ContainerResourceId, fragment, fragment.Name); 
transaction.AddToBackStack (fragment.Name); 
transaction.Commit(); 
0

完成此操作的一個好方法是將您的動畫製作人員設置爲xml並在事務處理期間設置過渡動畫。

  transaction.setCustomAnimations(
       R.animator.slide_in_from_right, 
       R.animator.slide_out_left, 
       R.animator.slide_in_from_left, 
       R.animator.slide_out_right); 

實施例的動畫代碼:

<objectAnimator 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
android:propertyName="translationX" 
android:duration="400" 
android:valueFrom="1.0" 
android:valueTo="0.0" 
android:valueType="floatType"/>