【问题标题】:viewflipper only next animationviewflipper 只有下一个动画
【发布时间】:2012-02-13 21:20:48
【问题描述】:

我创建了一个 viewflipper,以便在 android 中的 2 个视图之间翻转。

问题是我想在这两个视图之间切换使用相同的动画(滑入)。 当我从视图 1 -> 视图 2 翻转时它可以工作,但是当我从视图 2 -> 视图 1 翻转时它使用反向动画

当我使用 3 个视图时会发生同样的事情,翻转 1->2->3 时一切正常,但在 3->1 期间它使用反向动画

有什么想法吗?

【问题讨论】:

    标签: android animation viewflipper


    【解决方案1】:

    如果您这样做,您将完全控制动画和翻页:

    //ViewFlipper
    ViewFlipper flipper;
    //Four different animations
    Animation OutToRight;
    Animation OutToLeft;
    Animation InFromRight;
    Animation InFromLeft;        
    
    OutToRight = new TranslateAnimation(
                  Animation.RELATIVE_TO_PARENT,  0.0f,      Animation.RELATIVE_TO_PARENT,  +1.0f,
                  Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,   0.0f
                );
    OutToRight.setDuration(500);
            OutToRight.setInterpolator(new AccelerateDecelerateInterpolator());
    
            OutToLeft = new TranslateAnimation(
                  Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,  -1.0f,
                  Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,   0.0f
                );
          OutToLeft.setDuration(500);
        OutToLeft.setInterpolator(new AccelerateDecelerateInterpolator());
    
        InFromRight = new TranslateAnimation(
                  Animation.RELATIVE_TO_PARENT,  +1.0f, Animation.RELATIVE_TO_PARENT,   0.0f,
                  Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,   0.0f
                );
        InFromRight.setDuration(500);
          InFromRight.setInterpolator(new AccelerateDecelerateInterpolator());
    
        InFromLeft = new TranslateAnimation(
                      Animation.RELATIVE_TO_PARENT,  -1.0f, Animation.RELATIVE_TO_PARENT,  0.0f,
                      Animation.RELATIVE_TO_PARENT,  0.0f, Animation.RELATIVE_TO_PARENT,   0.0f
                    );
        InFromLeft.setDuration(500);
        InFromLeft.setInterpolator(new AccelerateDecelerateInterpolator());
    
        //Animating Left to page 1
    
        flipper.setInAnimation(InFromLeft);
        flipper.setOutAnimation(OutToRight);
        flipper.setDisplayedChild(1);
    
        //Animating right to page 2
        flipper.setInAnimation(InFromRight);
        flipper.setOutAnimation(OutToLeft);
        flipper.setDisplayedChild(2);
    

    【讨论】:

    • 在这种情况下,设置 Flipper.setInAnimation(InFromRight); Flipper.setOutAnimation(OutToLeft);不要改变它们。然后这些动画将用于任何后续的 setDisplayedChild 调用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多