问题描述
我在布局中声明了两个 imageViews(imageView1 和 ImageView2)。 imageView1 分配给底部,而 imageView2 与 imageView1 的 ALIGN_BottOM 对齐。在代码中,执行一些操作后,imageView1 移动到屏幕中心。现在,imageView2 应该与 imageView1 的 ALIGN_BottOM 对齐。这个怎么做?我正在使用以下布局。
<RelativeLayout
android:id="@+id/rlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:adjustViewBounds="true"
android:scaleType="centerCrop"/>
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"
android:layout_alignBottom="@+id/imageView1"
android:src="@drawable/android"
android:visibility="visible" />
</RelativeLayout
解决方法
假设您知道要设置动画的坐标,您可以编写一个使用 ViewPropertyAnimator 的方法,例如:
private void customAnimation(View view,float toX,float toY,int duration,int startDelay) {
view.animate()
.translationX(toX)
.translationY(toY)
.setDuration(duration)
.setStartDelay(startDelay)
.setInterpolator(new AccelerateDecelerateInterpolator());
}
(Interpolator 是可选的,只是让动画看起来更逼真)
然后这样称呼它:
customAnimation(imageView1,100,2000,0);
customAnimation(imageView2,150,2000);
您必须在哪里获取并填写持续时间的正确坐标和值,然后自己开始延迟,但这应该会让您开始。
如果它们更适合您,还有一些方法 translationXBy() 和 translationYBy()。