【问题标题】:Android get view coordinates if moved如果移动,Android会获取视图坐标
【发布时间】:2014-02-14 03:32:13
【问题描述】:

我在 RelativeLayout 的中心对齐了一个 ImageView,我希望它过渡到对齐的ParentTop。如何获取设置 TranslateAnimation 所需的 deltaY?

编辑: 由于我被要求展示我已经完成的工作,因此这是我正在使用的代码:

  private Animation getTranslateAnimation(final View v) {
    final float yDelta = getScreenHeight() - (2 * v.getHeight());

    TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, yDelta);

    translateAnimation.setDuration(Initial.DURATION_MILLIS);
    translateAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
    return translateAnimation;
}

这种方法的问题是我有在这个动画之后显示的 EditText,它应该位于 ImageView 的正下方。我设置了 AnimationListener 使其在动画结束时可见,但它将其定位在原始位置下方,而不是新位置下方。是否有一些简单的方法或者我应该切换到 PropertyAnimation 框架?

【问题讨论】:

  • 对此有很多不同的方法。视图显示在哪里(活动、片段、对话框等)?由于左上角是 0,0,基本想法是只获取当前视图的 X(假设您希望它保持在该位置)并将 y 移动到 0。我可以显示包含更多信息的代码。您可以发布您在此期间尝试过的内容吗?

标签: android android-layout android-animation android-ui


【解决方案1】:

如果您查看Animation Resources Documentation,您会发现您可以只定义相对于父级或自身的值。所以你可以有一个看起来像这样的 xml 资源:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:fromXDelta="0%"
        android:toXDelta="0%"
        android:fromYDelta="0%"
        android:toYDelta="0%p" />
</set>

这将产生这样的效果,即视图从其原始位置平移到与父顶部对齐(因为android:toYDelta="0%p" - “p”表示它是相对于父级的)。

如果您不需要真正以编程方式执行此操作,则应该可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    相关资源
    最近更新 更多