Android 获取缩放和平移差异以设置从一个视图到另一个视图的过渡动画?

Android 获取缩放和平移差异以设置从一个视图到另一个视图的过渡动画?,android,animation,Android,Animation,我正在尝试使用平移动画和缩放动画创建动画集,以使视图从其大小/位置移动到另一个视图大小/位置 我尝试在屏幕上使用getX/getY或getLocationOnScreen获取位置,以便为translate动画师提供信息,但在动画结束时第一个视图与第二个视图不匹配:/ (与缩放动画相同) 有什么想法吗?明白了。。。我的问题是,我首先应用了“平移”动画,而这会干扰缩放动画的轴点 下面的代码示例仅在X上翻译 View viewFrom = findViewById(R.id.viewA); View

我正在尝试使用平移动画和缩放动画创建动画集,以使视图从其大小/位置移动到另一个视图大小/位置

我尝试在屏幕上使用getX/getY或getLocationOnScreen获取位置,以便为translate动画师提供信息,但在动画结束时第一个视图与第二个视图不匹配:/

(与缩放动画相同)


有什么想法吗?

明白了。。。我的问题是,我首先应用了“平移”动画,而这会干扰缩放动画的轴点

下面的代码示例仅在X上翻译

View viewFrom = findViewById(R.id.viewA);
View viewTo = findViewById(R.id.viewB);
// Getting delta from center
int delta = (viewTo.getLeft()+Math.round(viewTo.getWidth()*viewTo.getScaleX()))-(viewFrom.getLeft()+Math.round(viewFrom.getWidth()+viewFrom.getScaleX()));
float ratio = viewTo.getScaleX() / viewFrom.getScaleX();
Animation anim = new ScaleAnimation(1.f, ratio, 1.f, ratio, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
AnimationSet animSet = new AnimationSet(true);
animSet.setInterpolator(new DecelerateInterpolator());
animSet.addAnimation(anim);
anim = new TranslateAnimation(0, delta, 0, 0);
animSet.addAnimation(anim);
animSet.setDuration(500);
viewFrom.startAnimation(animSet);

我就快到了,但不知怎么的,平移从比例上影响了轴心,使视图有点“偏移”。