【问题标题】:Fragment slide up animation doesn't show fragment underneath片段向上滑动动画不显示下面的片段
【发布时间】:2015-11-20 00:39:38
【问题描述】:

当打开一个片段时,我需要添加一个动画让它从底部向上滑动,然后当片段关闭时,它需要从屏幕上滑下来。

我在向上滑动的片段中有以下代码,几乎可以正常工作:

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 ();

关于如何使向上滑动动画正常工作,在向上滑动时显示下方的片段有什么想法吗?

【问题讨论】:

  • chang replace 添加 transaction.add(navigationContext.ContainerResourceId, fragment, fragment.Name);
  • 嘭嘭嘭嘭!!做到了...您可以将其重新发布为答案,我会接受吗?

标签: android xamarin xamarin.android android-animation


【解决方案1】:

用replace的意思删除之前的fragment。尝试用add:

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

【讨论】:

    【解决方案2】:

    实现此目的的一个好方法是在 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"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      相关资源
      最近更新 更多