gpt4 book ai didi

android - 如何用关键帧控制边距?

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:12 24 4
gpt4 key购买 nike

我想先更改 layout_marginStart,而 layout_marginStart 应该在第 60 帧之前更改。但是,随后的关键帧将被忽略,并且两个边距同时设置动画。

<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">


<Transition

app:constraintSetEnd="@+id/end"
app:constraintSetStart="@+id/start"

>
<OnSwipe
app:dragDirection="dragUp"
app:touchAnchorId="@id/scrollable"
app:touchAnchorSide="top" />
<KeyFrameSet>
<KeyAttribute
app:curveFit="linear"
app:framePosition="10"
app:motionTarget="@+id/text">
<CustomAttribute
app:attributeName="layoutMarginStart"
app:customDimension="68dip" />
</KeyAttribute>
<KeyAttribute
app:curveFit="linear"
app:framePosition="60"
app:motionTarget="@+id/text">
<CustomAttribute
app:attributeName="layoutMarginEnd"
app:customDimension="0dip" />
</KeyAttribute>

</KeyFrameSet>
<ConstraintSet android:id="@+id/start">
<Constraint
android:id="@+id/text"
android:layout_width="0dip"
android:layout_height="40dip"
android:layout_marginStart="16dip"

android:layout_marginTop="24dip"
android:layout_marginEnd="16dip"
android:layout_marginBottom="12dip"
android:background="#BEBEBE"
app:layout_constraintEnd_toEndOf="@+id/parent"
app:layout_constraintStart_toStartOf="@+id/parent"
app:layout_constraintTop_toTopOf="parent" />


</ConstraintSet>

<ConstraintSet android:id="@+id/end">
<Constraint
android:id="@+id/text"
android:layout_width="0dip"
android:layout_height="40dip"
android:layout_marginStart="60dip"
android:layout_marginTop="24dip"
android:layout_marginEnd="60dip"
android:layout_marginBottom="12dip"
android:background="#BEBEBE"
app:layout_constraintEnd_toEndOf="@+id/parent"
app:layout_constraintStart_toStartOf="@+id/parent"
app:layout_constraintTop_toTopOf="parent" />


</ConstraintSet>
</Transition>

</MotionScene>

最佳答案

您的 View 上没有setLayoutMarginStartsetLayoutMarginEnd 方法。 app:attributeName 参数将通过反射工作并搜索这些方法。

实现此目的的一种方法是简单地继承您的 View 并编写您自己的 setter 。

fun setMarginTop(newMarginTop: Int) {
val lp = layoutParams as? ViewGroup.MarginLayoutParams ?: return
lp.run {
setMargins(leftMargin, newMarginTop, rightMargin, bottomMargin)
}
layoutParams = lp
}

或者如果您使用 kotlin-ktx:

fun setMarginTop(newMarginTop: Int) {
updateLayoutParams<ViewGroup.MarginLayoutParams> {
updateMargins(top = newMarginTop)
}
}

关于android - 如何用关键帧控制边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56324146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com