MotionLayout: как анимировать маржу - PullRequest
0 голосов
/ 11 февраля 2019

Я использую MotionLayout, чтобы анимировать изменение размера представления в полноэкранном режиме до меньшего размера с определенными полями (согласно следующему).Это в основном работает нормально, но показанные поля равны 0 до самого конца анимации, после чего они применяются немедленно.Можно ли как-то их оживить?

<ConstraintSet android:id="@+id/start">
    <Constraint
        android:id="@+id/localVideoView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</ConstraintSet>

<ConstraintSet android:id="@+id/end">
    <Constraint
        android:id="@+id/localVideoView"
        android:layout_width="68dp"
        android:layout_height="120dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginEnd="16dp"
        android:layout_marginBottom="92dp"/>
</ConstraintSet>

Я пытался использовать KeyFrameSet для создания промежуточной точки с разными значениями полей, но это не имело никакого эффекта.

Например,

    <KeyFrameSet>
        <KeyAttribute
            app:framePosition="50"
            app:target="@id/localVideoView">
            <CustomAttribute
                motion:attributeName="layoutMarginBottom"
                motion:customDimension="92dp" />
        </KeyAttribute>
    </KeyFrameSet>

ОБНОВЛЕНИЕ

Итак, похоже, проблема связана с тем фактом, что я использую SurfaceView ...например, если я попробую с ImageView, то маржа постепенно изменится.

1 Ответ

0 голосов
/ 25 мая 2019

SurfaceView не позволяет корректное преобразование. Если вам нужно преобразование, вы должны использовать TextureView.

...