kotlin - MotionLayout如何旋转元素?
问题描述
现在我有一个包含两个元素的议案。当第一个持续时间为 50% 时,第二个开始。但我想将第二个元素在半过渡中旋转到最后。我尝试在 KeyCycle 中执行此操作,但它不起作用。也许我需要在 KeyAttribute 中这样做?但它也不起作用。也许有人给我小费?
场景:
<Transition
motion:autoTransition="animateToEnd"
motion:constraintSetEnd="@+id/end"
motion:constraintSetStart="@id/start"
motion:duration="1500">
<KeyFrameSet>
<KeyPosition
motion:framePosition="50"
motion:keyPositionType="pathRelative"
motion:motionTarget="@id/imageView"
motion:percentX="1" />
<KeyPosition
motion:framePosition="50"
motion:keyPositionType="pathRelative"
motion:motionTarget="@id/cardYes"
motion:percentX="0" />
<KeyCycle
android:translationY="50dp"
motion:framePosition="300"
motion:motionTarget="@+id/imageView"
motion:waveOffset="50dp"
motion:wavePeriod="2"
motion:waveShape="sin" />
</KeyFrameSet>
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_height="10dp"
android:layout_marginTop="15dp"
motion:layout_constraintBottom_toBottomOf="parent"
motion:layout_constraintRight_toRightOf="parent"
motion:layout_constraintStart_toStartOf="parent"
motion:layout_constraintTop_toTopOf="parent" />
<Constraint
android:id="@+id/cardYes"
android:layout_width="100dp"
android:layout_height="100dp"
motion:layout_constraintRight_toLeftOf="parent"
motion:layout_constraintTop_toBottomOf="parent" />
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint
android:id="@+id/imageView"
android:layout_width="400dp"
android:layout_height="290dp"
android:layout_marginTop="15dp"
motion:layout_constraintRight_toRightOf="parent"
motion:layout_constraintStart_toStartOf="parent"
motion:layout_constraintTop_toTopOf="parent" />
<Constraint
android:id="@+id/cardYes"
android:layout_width="100dp"
android:layout_height="100dp"
motion:layout_constraintEnd_toEndOf="parent"
motion:layout_constraintTop_toBottomOf="@+id/imageView" />
</ConstraintSet>
解决方案
必须有3个KeyCycle才能正常工作。
在你的情况下,也许你需要这样的代码:
<KeyFrameSet>
<KeyAttribute
android:rotation="0"
motion:framePosition="50"
motion:motionTarget="@id/view"
/>
<KeyAttribute
android:rotation="360"
motion:framePosition="100"
motion:motionTarget="@id/view"
/>
</KeyFrameSet>
推荐阅读
- linkedin - 使用 API 上传图片
- airflow - 如何顺序运行不依赖的同级任务?
- grep - 如何使用 find 或 grep 查找和报告 Zen Cart 版本?
- esptool - ampy 不再连接
- synchronization - 当站点重新联机时,Amplify DataStore 订阅不同步
- sql - 使用动态列名计算 JSON 键
- python - matplotlib/pyplot imshow 中的可变单元格大小
- delphi - 如何使用 TSendMail 创建邮件?
- c++ - 受约束的 CRTP 过早拒绝
- google-cloud-platform - 使用 GCP、Cloud Build 和 Terraform 工作区的临时环境