ConstraintLayout:translationX动画可将RadioButton和ImageView一起向右推

时间:2019-04-26 16:32:56

标签: android android-animation android-constraintlayout

我正在尝试使用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"
    />

哪个开始像这样:

Image with no visible RadioButton

然后我以编程方式启动此动画:

radioButton.animate().translationX(50).setDuration(500).start();

期望类似: (请注意,在此预览中,宽度和高度的大小均已减小,同时注意layout_constraintDimensionRatio =“ 8:5”)

Expected result

但是不幸的是,只有RadioButton才能平移(并在图像后面结束),而ImageView保持相同的大小和位置。 您能帮我理解为什么会这样吗?

我以为关键指令是ImageView中的app:layout_constraintStart_toEndOf="@id/radio_button",但我认为我遗漏了一些东西。

感谢您的帮助,谢谢大家

1 个答案:

答案 0 :(得分:0)

您将看到translatioX在Android视图中的工作方式:

  

setTranslationX

     

公共无效setTranslationX(浮动翻译X)

     

设置此视图相对于其左侧位置的水平位置。 除了将对象的布局放置在任何地方之外,这还可以有效地放置对象的后布局。

斜体是我的。这里的关键词是“布局后”。设置translationX仅会影响视图的位置,而不会更改任何其他视图的位置。换句话说,所有其他视图的行为就像translationX == 0

您仍然可以实现所需的效果,但是您将不得不使用页边距或TransitionManager来实现不同的效果。搜索“ ConstraintLayout动画”以获取一些想法。