gpt4 book ai didi

android - 运动布局不动画不是其直接子级的 View

转载 作者:行者123 更新时间:2023-12-04 08:51:20 26 4
gpt4 key购买 nike

我最近尝试了 MotionLayout,当它是 MotionLayout 的直接子项时,我在按钮上工作正常,但相同的运动场景不起作用,当我将按钮包含在另一个布局中,但父布局仍为 MotionLayout

按钮是直接子按钮的第一个布局:-

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.motion.widget.MotionLayout

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
app:layoutDescription="@xml/demo"
android:layout_height="match_parent"
tools:context=".Demo" >

<Button
android:layout_width="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_height="wrap_content"
android:id="@+id/yellow_button"
/>


</androidx.constraintlayout.motion.widget.MotionLayout>

第二种布局,其中按钮是间接子元素:-

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.motion.widget.MotionLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
app:layoutDescription="@xml/demo"
android:layout_height="match_parent"
tools:context=".Demo"
>
<LinearLayout
android:layout_width="match_parent"
android:id="@+id/l1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/yellow_button"/>
</LinearLayout>

</androidx.constraintlayout.motion.widget.MotionLayout>

运动场景布局如下:-

<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<ConstraintSet android:id="@+id/start">
<Constraint android:id="@+id/yellow_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" >

<CustomAttribute app:attributeName="alpha"
app:customFloatValue="0.0"/>

</Constraint>
</ConstraintSet>

<ConstraintSet android:id="@+id/end">
<Constraint android:id="@id/yellow_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alpha="1.0"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
>

<CustomAttribute app:attributeName="alpha"
app:customFloatValue="1.0"/>

</Constraint>

</ConstraintSet>

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

app:autoTransition="animateToEnd"
app:constraintSetStart="@+id/start"
app:duration="2000"/>

在这些情况下是否需要遵循任何准则?

这是否意味着只有 MotionLayout 的直接子级才能用它制作动画?

最佳答案

Google Developers 的这篇媒体文章 ( https://medium.com/google-developers/introduction-to-motionlayout-part-i-29208674b10d ) 在“限制”部分说:“MotionLayout 只会为其直接子级提供其功能——与 TransitionManager 相反,TransitionManager 可以使用嵌套布局层次结构以及 Activity 转换。”

关于android - 运动布局不动画不是其直接子级的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64087556/

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