在动画中的ViewAnimator黑屏

时间:2014-08-27 16:49:34

标签: android android-animation

我有一个问题,我正在尝试在ViewAnimator中创建一个孩子,它将从底部滑动。在按下后,它会再次向下滑动。

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

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

任何帮助?

编辑:

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

2 个答案:

答案 0 :(得分:0)

此:

 viewFlipper.setOutAnimation(null);

 viewFlipper.setInAnimation(null);

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

来提供相反方向的动画。 只需使用两个动画即可实现此目的。只需使用幻灯片并向外滑动以显示下一个视图,相反的两个动画相同,但您必须反向它们 - 最好使用一些setRepeatMode(Animation.REVERSE) - 参考{ {3}}或者只是声明其他反转动画。

答案 1 :(得分:0)

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