如何向上翻译

时间:2014-09-20 14:07:23

标签: android translate-animation

我想创建一个与屏幕上其他对象相关的翻译动画

    if(vipUpSet == null) {
    Rect contactUsLocation = new Rect();
    Rect infoLocation = new Rect();
    Rect vipLocation = new Rect();
    contactUs.getGlobalVisibleRect(contactUsLocation);
    info.getGlobalVisibleRect(infoLocation);
    vip.getGlobalVisibleRect(vipLocation);
    vipUp = new TranslateAnimation(vipLocation.left, contactUsLocation.right + 20, vipLocation.top, contactUsLocation.top);
    vipUpSet = new AnimationSet(true);
    vipUpSet.setInterpolator(new LinearInterpolator());
    vipUpSet.addAnimation(scaleDown);
    vipUpSet.addAnimation(vipUp);
    vipUpSet.setDuration(1000);
    vipUpSet.setFillAfter(true);
    }

enter image description here

我在屏幕顶部有两个按钮,名为contactUs和info

我希望vip从它所在的地方起飞,然后到contactUs按钮的右侧

当前设置,使视图消失并从底部飞入,我希望它从当前状态飞行。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

  • 您使用的是错误的增量。

这应该做:

float deltaY = contactUsLocation.top - vipLocation.top;
vipUp = new TranslateAnimation(0.f, 0.f, 0.f, deltaY);
// ... same ...

此代码会将contactUs从当前位置移动到与vip水平对齐的位置(但没有水平转换)。

设置为0.f的初始增量意味着View从其当前位置开始制作动画。最后的增量是翻译的补偿。

请注意scaleDown动画不会干扰翻译。