Android translateanimation从一个位置移动到另一个位置

时间:2014-03-17 07:35:50

标签: android animation translate-animation

我的布局中有6张图片浏览量。其中5个是源图像视图和目标图像视图。

我想将源图像视图移动到目标图像视图的确切位置。

我已经创建了以下代码来执行此操作,但它不会以某种方式工作。

private void animate(View fromView, View toView) {
    float toX = toView.getLeft();
    float toY = toView.getTop();

    TranslateAnimation move = new TranslateAnimation(0, toX, 0, toY);
    move.setDuration(200);
    move.setStartOffset(offset);
    move.setFillAfter(true);
    fromView.startAnimation(move);

    offset = offset + 200;
}

这是我的xml。

<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:padding="10dp"
android:clipChildren="false"
tools:context="com.sample.myapplication.MyActivity">

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:gravity="center">

        <ImageView
            android:id="@+id/ivLife"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_heart" />

        <TextView
            android:id="@+id/tvLife"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0"
            android:textSize="15dp"
            android:textStyle="bold" />
    </LinearLayout>
</RelativeLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clipChildren="false"
    android:orientation="vertical"
    android:layout_centerInParent="true"
    android:gravity="center">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">

        <TextView
            android:id="@+id/tvMessage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/llHearts"
        android:clipChildren="false"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_heart"
            android:padding="10dp"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_heart"
            android:padding="10dp"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_heart"
            android:padding="10dp"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_heart"
            android:padding="10dp"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_heart"
            android:padding="10dp"/>
        </LinearLayout>

</LinearLayout>

</RelativeLayout>

我该怎么做?

1 个答案:

答案 0 :(得分:0)

翻译动画接受x值的变化,而不是绝对值。因此,您需要获取fromView的x和toView的x,并将它们之间的差异放在您的翻译动画中(与y相同)。

来自:http://developer.android.com/reference/android/view/animation/TranslateAnimation.html 参数 fromXDelta:改变X坐标以应用于动画的开头

toXDelta:更改X坐标以应用于动画结尾

fromYDelta:更改Y坐标以应用于动画的开头

toYDelta:更改Y坐标以应用于动画结尾