Rob*_*nez 6 android android-transitions android-motionlayout
我正在尝试使用 alpha 和 motionLayout 制作淡入淡出的效果,但似乎不起作用。
这是我想要淡出的 imageView。
<ImageView
android:id="@+id/tijeras"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
android:contentDescription="@string/tijeras"
android:src="@drawable/ic_tijeras" />
</android.support.constraint.motion.MotionLayout>
Run Code Online (Sandbox Code Playgroud)
这是运动文件
<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<Transition
app:duration="2000"
app:constraintSetStart="@+id/start"
app:constraintSetEnd="@+id/end">
<KeyFrameSet>
<KeyAttribute
app:framePosition="0"
app:motionTarget="@id/tijeras"
android:alpha="1.0"/>
<KeyAttribute
app:framePosition="50"
app:motionTarget="@id/tijeras"
android:alpha="0.0"/>
</KeyFrameSet>
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint android:id="@+id/tijeras"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alpha="1.0"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/logo"/>
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint android:id="@+id/tijeras"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alpha="1.0"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/logo"/>
</ConstraintSet>
</MotionScene>
Run Code Online (Sandbox Code Playgroud)
我可以看到图像,但它没有进行 alpha 输入和输出。任何的想法?我需要触发它才能启动吗?
小智 1
我想我已经找到了问题和解决方案。所以你定义了两个 ConstraintSet (start, end) 并且在 alpha = 1 中,这意味着你的视图在它们中都是可见的,对吗?现在让我们看看您的 KeyFrameSet
<KeyFrameSet>
<KeyAttribute
app:framePosition="0"
app:motionTarget="@id/tijeras"
android:alpha="1.0"/>
<KeyAttribute
app:framePosition="50"
app:motionTarget="@id/tijeras"
android:alpha="0.0"/>
</KeyFrameSet>
Run Code Online (Sandbox Code Playgroud)
你是说在framePosition = 0时你的视图是可见的(alpha=1),然后在你的转换中间(framePosition = 50)你隐藏了你的视图(alpha=0)。这意味着当您处于framePosition = 100(过渡结束)时,alpha 将再次为1,因为在您的ConstraintSet(结束)中等于1。
所以尝试像这样改变它,而不是50,framePosition = 100
<KeyFrameSet>
<KeyAttribute
app:framePosition="0"
app:motionTarget="@id/tijeras"
android:alpha="1.0"/>
<KeyAttribute
app:framePosition="100"
app:motionTarget="@id/tijeras"
android:alpha="0.0"/>
</KeyFrameSet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |