gpt4 book ai didi

android - 是否可以使用 MotionLayout 为组的可见性设置动画?

转载 作者:行者123 更新时间:2023-12-02 04:23:38 28 4
gpt4 key购买 nike

我正在尝试使用 MotionLayout 制作动画,我需要隐藏一些元素。
我在单个元素中测试了可见性属性并且它可以工作,但是为了使 XML 更短,我希望能够仅指定一个包含所有这些元素的组(来自 ConstraintLayout 助手)

像这样的东西

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

<Transition
app:constraintSetStart="@id/start"
app:constraintSetEnd="@id/end"

app:duration="300">

<OnSwipe
app:touchAnchorId="@id/details_group"
app:touchAnchorSide="bottom"
app:dragDirection="dragDown"
/>

</Transition>

<ConstraintSet
android:id="@+id/start">

<Constraint
android:id="@+id/details_group"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="gone"
app:constraint_referenced_ids="detail_value_topl,detail_icon_topl,detail_value_topr" />

</ConstraintSet>

<ConstraintSet
android:id="@+id/end">

<Constraint
android:id="@+id/details_group"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="visible"
app:constraint_referenced_ids="detail_value_topl,detail_icon_topl,detail_value_topr" />

</ConstraintSet>

</MotionScene>

但是它不起作用,知道如何使它起作用吗?

另外,我更喜欢 不使用 alpha ,因为所有约束都已设置,因此当它们消失时,容器会调整大小

最佳答案

与其在约束上声明可见性,不如将可见性声明为自定义属性。因此,对于您的第一个约束,请尝试以下操作:

     <Constraint
android:id="@+id/details_group"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="detail_value_topl,detail_icon_topl,detail_value_topr">
<CustomAttribute
motion:attributeName="visibility"
motion:customIntegerValue="8" />
</Constraint>

对于你的第二个约束,试试这个
    <Constraint
android:id="@+id/details_group"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="detail_value_topl,detail_icon_topl,detail_value_topr">
<CustomAttribute
motion:attributeName="visibility"
motion:customIntegerValue="0" />
</Constraint>

通过将可见性声明为自定义属性,这应该有助于运动布局在可见性值之间正确插入。哪个 int 值是哪个可见性有点不直观,但它们的定义如下
Visible = 0
Invisible = 4
Gone = 8

关于android - 是否可以使用 MotionLayout 为组的可见性设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57034120/

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