如何将子视图独立移到父视图?

时间:2019-07-12 13:25:53

标签: android animation objectanimator

我是Android Studio的新手,遇到问题。

所以我在布局中包含三个按钮。我想做的是移动一个按钮,将其命名为button1,单击此按钮时将其向上移动到位置(x,y),然后将整个屏幕(不包含button1的布局)向下移动,从屏幕外移出,而button1保持在位置(x,y ),某种按钮按下效果

我使用了objectAnimator。首先,我将button1向上移动,这按预期工作,但是当我尝试向下移动整个布局时,button1随整个布局向下移动,这是我不希望的,我希望它保持在位置(x,y)片刻,然后向下移动并移出屏幕。是否可以单独使用objectAnimator,以便button1动画不依赖于整个布局

这是一个简化的XML文件

 <RelativeLayout 
   android:height="600dp"
   android:width="800dp">

   <Button 
   android:id="@+id/button1/>
   <Button 
   android:id="@+id/button2/>
   <Button 
   android:id="@+id/button3/>

</RelativeLayout>

这就是我在Java中尝试过的

ObjectAnimator objAnimUp = ObjectAnimator.ofFloat(button1, "y", -600);
ObjectAnimator objAnimDown = ObjectAnimator.ofFloat(button2, "y", 1000);

objAnimUp.setDuration(500);
objAnimDown.setDuration(1000);

objAnimUp.start();
objAnimDown.start();
上面的代码

向上转换button1,然后向下转换整个布局,包括button1(这是布局的一部分)。我不要那个。我希望button1保持在新位置,然后向下移动一会儿 是否可以暂时从布局中删除button1并将其独立向上移动?

我尝试了“ button1.removeParent()”,但这似乎没有什么不同。还有其他解决方案吗?

谢谢您的回答

1 个答案:

答案 0 :(得分:0)

基本上,如果按钮使用相同的父级布局,则无法移动。您必须再添加一个父级布局,以保留该按钮和其他要使其动画的视图。 试试这个,

 <RelativeLayout 
       android:height="match_parent"
       android:width="match_parent">
    <RelativeLayout 
       android:height="600dp"
       android:width="800dp">

       <Button 
       android:id="@+id/button2/>
       <Button 
       android:id="@+id/button3/>

    </RelativeLayout>
    <Button 
       android:id="@+id/button1/>
    </RelativeLayout>

现在应用相同的动画,它将使您想要向上移动的按钮外面的按钮起作用。