android动画将视图移动到另一个视图

android动画将视图移动到另一个视图,android,android-layout,coordinates,android-animation,Android,Android Layout,Coordinates,Android Animation,我有两个不同布局的视图,我想一个移动到另一个。我的代码怎么了?Y动画播放错误。第一个视图位于片段的布局中,第二个位于状态栏中 ... int p1[] = new int[2]; int p2[] = new int[2]; viewOne.getLocationInWindow(p1); viewTwo.getLocationInWindow(p2); AnimatorSet animatorSet = new AnimatorSet();

我有两个不同布局的视图,我想一个移动到另一个。我的代码怎么了?Y动画播放错误。第一个视图位于片段的布局中,第二个位于状态栏中

    ...
    int p1[] = new int[2];
    int p2[] = new int[2];
    viewOne.getLocationInWindow(p1);
    viewTwo.getLocationInWindow(p2);


    AnimatorSet animatorSet = new AnimatorSet();
    animatorSet
            .play(ObjectAnimator.ofFloat(expandedImageView, "X", p1[0], p2[0] - p1[0]))
            .with(ObjectAnimator.ofFloat(expandedImageView, "Y", p1[1], p2[1] - p1[1]))
            .with(ObjectAnimator.ofFloat(expandedImageView, View.SCALE_X, startScale))
            .with(ObjectAnimator.ofFloat(expandedImageView, View.SCALE_Y, startScale));

我为您提供了另一个解决方案:(将viewOne移动到viewTwo)


它怎么会出错?@Whitney它应该移到屏幕的一角,但y没有长大。请看我的答案,这是直接相关的:对不起,我尝试了这段代码,但不起作用。我有一个imageview,我想将其移动到另一个固定的图像视图,但实际上正在将我的图像以对角线方向移动到upnote:初始化期间的视图将返回位置0,请尝试在
new Handler().postDelayed(new Runnable{},200)中执行此操作
@KirillKarmazin除了使用
处理程序
之外,您还可以在
viewTreeObserver
上使用
onGlobalLayoutListener
,这样上面的代码就在
viewTwo.viewTreeObserver.addOnGlobalLayoutListener{//动画代码在这里}
中。
 TranslateAnimation animation = new TranslateAnimation(0, viewTwo.getX()-viewOne.getX(),0 , viewTwo.getY()-viewOne.getY());
    animation.setRepeatMode(0);
    animation.setDuration(3000);
    animation.setFillAfter(true);
    viewOne.startAnimation(animation);