我正在尝试使用RadioButton上的translationX动画向右推ImageView。 那就是我创建的布局:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<RadioButton
android:id="@+id/radio_button"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginStart="10dp"
app:layout_constraintEnd_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<ImageView
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="15dp"
android:background="@drawable/my_image"
app:layout_constraintStart_toEndOf="@id/radio_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="8:5"
/>
哪个开始像这样:
然后我以编程方式启动此动画:
radioButton.animate().translationX(50).setDuration(500).start();
期望类似: (请注意,在此预览中,宽度和高度的大小均已减小,同时注意layout_constraintDimensionRatio =“ 8:5”)
但是不幸的是,只有RadioButton才能平移(并在图像后面结束),而ImageView保持相同的大小和位置。 您能帮我理解为什么会这样吗?
我以为关键指令是ImageView中的app:layout_constraintStart_toEndOf="@id/radio_button"
,但我认为我遗漏了一些东西。
感谢您的帮助,谢谢大家
答案 0 :(得分:0)
您将看到translatioX
在Android视图中的工作方式:
公共无效setTranslationX(浮动翻译X)
设置此视图相对于其左侧位置的水平位置。 除了将对象的布局放置在任何地方之外,这还可以有效地放置对象的后布局。
斜体是我的。这里的关键词是“布局后”。设置translationX
仅会影响视图的位置,而不会更改任何其他视图的位置。换句话说,所有其他视图的行为就像translationX == 0
。
您仍然可以实现所需的效果,但是您将不得不使用页边距或TransitionManager来实现不同的效果。搜索“ ConstraintLayout动画”以获取一些想法。