android - 如何将子视图独立移动到父视图?
问题描述
我是 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()”,但这似乎没有什么不同。还有其他解决方案吗?
谢谢您的回答
解决方案
基本上,如果按钮处于相同的父布局中,您将无法移动。您必须再添加一个父布局,该布局将保存您想要动画下来的按钮和其他视图。试试这个,
<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>
现在应用相同的动画,它将工作外部的按钮是您要向上移动的按钮。
推荐阅读
- android - android:背景不适用于主题为 Theme.MaterialComponents.DayNight.DarkActionBar 的按钮
- scala - 在 spark scala 中获取 s3 目录的大小
- r - 如何在 NMDS 排序中绘制超过 2 个维度?
- dynamic - PowerBI中基于Dynamic Measure的Dynamic Bin
- linux - Linux 中的任何操作系统触发器以由用户手动检测系统时间/时区更改
- dockerfile - 如果 xx 或 xx,否则... dockerfile 中的条件
- reactjs - 当使用 Jest & Enzyme 加载 = false 时,如何模拟 Graphql 查询并将加载程序设置为 false 以测试反应组件?
- npm - npm 安装:npm 错误!https://registry.npmjs.org/axios 上的无效 json 响应正文 原因:JSON 输入意外结束
- elasticsearch - 有没有办法在弹性搜索中按字段 A 对前 N 个项目进行排序,然后按字段 B 排序
- avrdude - 大苏尔 M1 上的 Avrdude