android - 移动到android中的新位置后,如何在另一个imageview的底部对齐imageview?
问题描述
我在布局中声明了两个 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());
}
(插值器是可选的,只是让动画看起来更逼真)
然后将其称为:
customAnimation(imageView1, 100, 100, 2000, 0);
customAnimation(imageView2, 150, 150, 2000, 2000);
您必须在其中获取并填写持续时间的正确坐标和值,然后自己开始延迟,但这应该可以帮助您入门。
如果它们更适合您,还有方法 translationXBy() 和 translationYBy()。
推荐阅读
- java - 单击按钮时随机化数组中的颜色
- typescript - 是否可以在 TypeScript 中使用 `extends` 或 `implements` 强制构造函数参数类型?
- c++ - 这个 C++ 类是否泄漏内存?
- bash - 如何使用shell将具有特定名称要求的文件复制到直接父目录
- wpf - 如何确保 WPF 子菜单在还原模式下不会超出我的主窗口?
- python - 由于无法让浏览器请求通过这些代理和标头,我该如何修复我的代码?
- html - 为什么我的 div 不会堆叠在一起?
- azure-keyvault - Azure 错误“您的证书文件无效,或密码不正确”将证书加载到门户中
- logback - 如何在 Logback 中使用 JSON appender?
- c++ - C++ 在二维向量中搜索所选元素周围的元素?