【问题标题】:ViewAnimator black screen in AnimationViewAnimator在Animation中黑屏
【发布时间】:2014-08-28 02:17:13
【问题描述】:

我有一个问题,我正在尝试在 ViewAnimator 中创建 child,它会从底部滑动。并且在回压之后,它会再次滑下。

Animation anim = new TranslateAnimation(
        Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
        Animation.RELATIVE_TO_PARENT, 1.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
anim.setDuration(350);
anim.setInterpolator(new AccelerateInterpolator());

viewFlipper.setInAnimation(anim);
viewFlipper.setOutAnimation(null);
viewFlipper.setDisplayedChild(2);

onBackPress:

Animation anim = new TranslateAnimation(
        Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
        Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 1.0f
);
        anim.setDuration(350);
        anim.setInterpolator(new AccelerateInterpolator());

        viewFlipper.setInAnimation(null);
        viewFlipper.setOutAnimation(anim);
        viewFlipper.setDisplayedChild(0);

但我的问题是,当我第一次单击按钮时,屏幕变黑并且 Child 向上滑动。当我单击后退按钮时,一切正常。 (孩子向下滑动,后面是第一个屏幕...

有什么帮助吗?

编辑:

Animation inAnim = new TranslateAnimation(
        Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
        Animation.RELATIVE_TO_PARENT, 1.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
anim.setDuration(350);
anim.setInterpolator(new AccelerateInterpolator());

Animation outAnim = new TranslateAnimation(
        Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
        Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
);
outAnim.setDuration(350);
outAnim.setInterpolator(new AccelerateInterpolator());

viewFlipper.setInAnimation(inAnim);
viewFlipper.setOutAnimation(outAnim);
viewFlipper.setDisplayedChild(2);

【问题讨论】:

    标签: android android-animation


    【解决方案1】:

    这个:

     viewFlipper.setOutAnimation(null);
    

     viewFlipper.setInAnimation(null);
    

    本质上它告诉框架隐藏第一个视图,然后为第二个视图设置动画。

    必须提供相反方向的动画。 这可以仅使用 两个 动画来实现。只需使用滑入和滑出来显示下一个视图,并使用相同的两个动画来显示相反的视图,但是您必须反转它们 - 最好使用一些 setRepeatMode(Animation.REVERSE) - 参考@ 987654321@ 或者只是声明额外的反向动画。

    【讨论】:

    • 不知道你是否理解我的期望,但我想让一个孩子固定到位,第二个会上下滑动。
    • 尝试 anim.setFillBefore(true) 或 anim.setFillAfter(true) 以获得不同的结果。
    【解决方案2】:
    Animation inAnim = new TranslateAnimation(
        Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
        Animation.RELATIVE_TO_PARENT, 1.0f, Animation.RELATIVE_TO_PARENT, 0.0f
    );
    anim.setDuration(350);
    anim.setInterpolator(new AccelerateInterpolator());
    
    Animation outAnim = new TranslateAnimation(
        Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f,
        Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f
    );
    outAnim.setDuration(350);
    outAnim.setInterpolator(new AccelerateInterpolator());
    
    viewFlipper.setInAnimation(inAnim);
    viewFlipper.setOutAnimation(outAnim);
    viewFlipper.setDisplayedChild(2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多