【问题标题】:%p in android animation%p 在安卓动画中
【发布时间】:2016-12-10 18:26:57
【问题描述】:

我对动画中的 %p 单位感到困惑。 这是我的动画文件 test.xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:duration="1000"
    android:fillAfter="true"
    android:fromXDelta="0"
    android:toXDelta="0"
    android:fromYDelta="50%p"
    android:toYDelta="50%p" />

我将这个动画用于我的视图

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_alignParentTop="true"
        android:background="#ff2"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/view" />

</RelativeLayout>

在动画之后,视图几乎是屏幕的中心,正如我所料。

但是,如果我将视图的位置更改为它的父视图的中心,并且动画后视图的位置不正确

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_centerVertical="true"
        android:background="#ff2"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/view" />

</RelativeLayout>

结果如下:

我认为对于同一个父母,50%p 总是一样的,但结果却不是。为什么?

【问题讨论】:

标签: android animation translate-animation


【解决方案1】:

你可以试试

android:fromYDelta="0%p"
android:toYDelta="50%p"

然后你会在 1000 毫秒内看到你的动画

所以

  • android:fromYDelta= 表示基于视图自身的起始位置
  • android:toYDelta= 表示基于视图自身的结束位置

当你设置视图android:layout_alignParentTop="true" ,View 动画从上到中。

当你设置视图android:layout_alignParentCenter="true" ,View 动画从中心到底部。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 2011-12-04
    • 1970-01-01
    • 2010-10-27
    • 2016-11-13
    • 2013-03-05
    • 2013-02-07
    • 2011-12-20
    相关资源
    最近更新 更多