我的布局中有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>
我该怎么做?
答案 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坐标以应用于动画结尾