翻译动画无效

时间:2014-10-02 13:52:36

标签: android android-animation

我希望我的视图从布局的右下角移动到中心。我在RelativeLayout中只有一个textView,并编写了一个简单的代码来测试它,但是没有用。

这是我的动画XML;

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

这是我的布局文件;

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

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="x" />

</RelativeLayout>

这是活动的相关部分;

    x = (TextView) findViewById(R.id.textView1);
    Animation translate = AnimationUtils.loadAnimation(MainActivity.this,
            R.anim.viewanimation); 
    x.startAnimation(translate);

问题是,textView&#34; x&#34;不动。我已经读过在XML文件中指定%p使它相对于父文件。由于我希望我的视图从原始位置移动到屏幕中心,因此我设置了#34;来自&#34;和&#34;到&#34;值为0%50%p。我观察到,当我删除%p属性并将其从0%移动到-100%时,它会正确移动。所以相对定位似乎在这里不起作用。我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

问题解决了。相对值应为负值,如下所示;

android:toXDelta="-50%p"
android:toYDelta="-50%p" 

因为正值会将视图移出布局。因此,%0p值对应于布局的右下角。