我有一个带有形状、描边和颜色的自定义可绘制对象,我希望从一个可绘制对象过渡到另一个可绘制对象。我的问题是,使其正常工作的正确 attributeName 和自定义值是什么?
我已经尝试过这个:
<CustomAttribute
app:attributeName="background"
app:customColorDrawableValue="@drawable/border_right_radius_5"/>
尝试了其他选项,但似乎不起作用。有什么想法吗?
您可以创建两个具有相同约束的
ImageView
并将它们淡入和淡出
<androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/iv1"
...
android:visibility="visible"
app:srcCompt="@drawable/shape1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent" />
<ImageView
android:id="@+id/iv2"
...
android:visibility="invisible"
app:srcCompt="@drawable/shape2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout>
还有
<MotionScene>
...
<ConstraintSet android:id="@+id/end">
<Constraint
android:id="@+id/iv1"
android:visibility="invisible"
... />
<Constraint
android:id="@+id/iv2"
android:visibility="visible"
... />
</ConstraintSet>
</MotionScene>
另一种方法是拥有类似的东西:
<ConstraintSet android:id="@+id/start">
<Constraint ...>
<CustomAttribute
motion:attributeName="BackgroundResource"
motion:customReference="@drawable/gradient_blue_background" />
</Constraint>
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint ...>
<CustomAttribute
motion:attributeName="BackgroundResource"
motion:customReference="@drawable/gradient_blue_background_rounded" />
</Constraint>
</ConstraintSet>