我想创建一个与屏幕上其他对象相关的翻译动画
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);
}
我在屏幕顶部有两个按钮,名为contactUs和info
我希望vip从它所在的地方起飞,然后到contactUs按钮的右侧
当前设置,使视图消失并从底部飞入,我希望它从当前状态飞行。
我该怎么做?
答案 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
动画不会干扰翻译。