android - 如何限制 Android 中 View 的翻译动画的边界?

标签 android animation

让我解释一下我想要实现的场景:-

将以下内容视为我在 Parent_Linearlayout 中的布局:

[Linear Layout] (Fill_Parent, Wrap_Content)
[ScrollView]

Activity 的 setContentView 设置为 Parent_Linearlayout

在应用程序中,当满足条件时,我希望将 Scrollview 从屏幕上移除,并在其位置放置另一个 View。

我已经能够做到这一点,并且当我删除 ScrollView 时,我正在对其应用翻译动画,以便在删除它之前看起来好像 View 已经到达顶部。
但是当动画发生时,ScrollView 会平移到其上方的线性布局上。

如何限制它,使 ScrollView 不会越过线性布局,而是消失在线性布局的底部。我希望线性布局始终保持可见..

很长一段时间以来,我一直在尝试这样做,但一直无法获得预期的结果。 有人可以帮我解决这个问题吗??

最佳答案

我不太明白你对布局的描述,但 Android View 系统是根据层次结构中 View 的顺序绘制的。稍后添加到父级的 View 在较早添加的 View 之后绘制。因此,如果您始终希望 LinearLayout 在重叠时绘制在 ScrollView 之上,则在 LinearLayout 对象之前声明或将 ScrollView 对象添加到其父对象。

在进一步考虑这一点时,我认为此处的排序很重要,因为您希望将 ScrollView 放置在这两个 View 的父级中的 LinearLayout 下方。将 ScrollView 放在第一位(因此首先绘制它)会将其放在另一个 LinearLayout 之上,这不是您想要的。 有多种方法可以实现您想要的。例如,您可以使用 RelativeLayout 作为 View 的父级,那么顺序并不重要。 或者,您可以将 ScrollView 放在另一个 LinearLayout 中(并且该 LinearLayout 将是整个父布局的第二个子布局)。然后,当您为 ScrollView 设置动画时,它会被其直接父级裁剪,我相信这会给您带来您正在寻找的效果(确保 setClipChildren() 在这个新的中间 LinearLayout 上设置为 true,它是由默认情况下,否则它不会在 ScrollView 动画时剪辑它)。请注意,这种方法需要不同的动画值,因为您现在正在为其父 View (新的 LinearLayout)之外的 View 设置动画。

关于android - 如何限制 Android 中 View 的翻译动画的边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5190803/

相关文章:

android - 如何获取拨出电话的状态

java - 平滑地制作分形树的动画

java - 更改基本 Java 动画中的颜色

android - 当移动设备在 Android 中使用蓝牙连接时如何连接移动设备详细信息

java - 将 NumberPicker 值添加到当前 TextView 字符串

ios - 交互式 UIView 翻转过渡

Android:Android 资源中是否有可用的原生/默认动画?

javascript - 使用 tween max 反向旋转

android - 通用图像加载器有时无法加载图像

android - 为 Android 构建 bspatch