如何正确移动/移出动画?

时间:2016-10-21 13:35:27

标签: android android-animation

onViewCreate中,我在屏幕后面设置了视图:

holderMenus.post(new Runnable() {
      @Override public void run() {
        if (holderMenus != null) {
          if (DeviceType.INSTANCE.tablet) {
            holderMenus.animate().translationY(-holderMenus.getHeight());
          } else {
            holderMenus.animate().translationY(holderMenus.getHeight());
          }
        }
      }
    });

然后,当我想移动视图时:

  holderMenus.animate().translationY(0).setDuration(300);

效果很好;视图滑入。接下来我想将视图移出屏幕:

 if (DeviceType.INSTANCE.tablet) {
     holderMenus.animate().translationY(-holderMenus.getHeight()).setDuration(300);
 } else {
     holderMenus.animate().translationY(holderMenus.getHeight()).setDuration(300);
 }

但是不是滑动,视图就会消失,好像我已将属性设置为.setVisibility(View.GONE);

如何让它滑动呢?

2 个答案:

答案 0 :(得分:3)

我制作了一个自定义操作按钮,可以在屏幕下方滑动,并在滚动列表视图时在屏幕下方滑动。

隐藏:

        TranslateAnimation anim = new TranslateAnimation(0, 0, 0, 500);
        anim.setDuration(300l);
        anim.setFillAfter(true);
        layout.startAnimation(anim); //layout is the layout with the button

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                layout.clearAnimation();
                layout.setVisibility(View.GONE);
            }
        }, 300l);

节目:

Handler h = new Handler();
            h.postDelayed(new Runnable() {
                @Override
                public void run() {
                    try {
                        layout.setVisibility(View.VISIBLE);
                        TranslateAnimation anim = new TranslateAnimation(0, 0, 500, 0);
                        anim.setDuration(300l);
                        anim.setFillAfter(true);
                        layout.startAnimation(anim);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }, 500l);

答案 1 :(得分:0)

我猜幻灯片动画并非从您认为的那一刻开始。它可能会在屏幕上的相同位置“动画”。

您可能想尝试使用ObjectAnimator,例如,您可以使用ofFloat方法为动画指定起点和终点。