2016-08-04 18 views
1

Я смущен примерно% p unit в анимации. Вот мой аним файл test.xml% p в андроид анимации

<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> 

И после того, как анимированный, вид почти центрировать экран, как я ожидал. enter image description here

Но, если изменить положение точки зрения к центру его родителей, и положение зрения после того, как анимация не является правильным

<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> 

Вот результат: enter image description here

Я думаю, что для одного и того же родителя 50% p всегда одинаковы, но результата нет. Зачем?

+1

см. Это сообщение: http://stackoverflow.com/a/4412183/5519005 –

+0

- это 50% p mean: currentY + 50% * parentHeight? – maphongba008

ответ

0

вы можете попробовать

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

тогда вы увидите анимированные в 1000мс

так

  • android:fromYDelta= означает стартовую позицию, основанную на viewself
  • в android:toYDelta= означает конец позиция на основе вида

, когда вы устанавливаете вид android:layout_alignParentTop="true" , вид анимированный сверху до центра.

, когда вы устанавливаете вид android:layout_alignParentTop="true" , вид анимированный с центра на нижний.