android / views-widgets-samples

Multiple samples showing the best practices in views-widgets on Android.
Apache License 2.0
5.08k stars 3.01k forks source link

Constraint Layout 2.0 alpha1 CustomAttribute has an error with attributeName="Alpha" #66

Open yndongyong opened 6 years ago

yndongyong commented 6 years ago

Hi,There: CustomAttribute has an error ,attributeName="Alpha",when the Animation finished,the button return to the "start" state. I don't use this way:android:alpha="0.2" my code looks like: <MotionScene xmlns:android="http://schemas.android.com/apk/res/android" xmlns:motion="http://schemas.android.com/apk/res-auto">

<Transition
    motion:constraintSetEnd="@+id/end"
    motion:constraintSetStart="@+id/start"
    motion:duration="1000"
    motion:interpolator="linear">
    <OnSwipe
        motion:dragDirection="dragRight"
        motion:touchAnchorId="@id/button"
        motion:touchAnchorSide="right" />
</Transition>

<ConstraintSet android:id="@+id/start">
    <Constraint
        android:id="@id/button"
        android:layout_width="64dp"
        android:layout_height="64dp"
        android:layout_marginStart="8dp"
        motion:layout_constraintBottom_toBottomOf="parent"
        motion:layout_constraintStart_toStartOf="parent"
        motion:layout_constraintTop_toTopOf="parent">
        <CustomAttribute
            motion:attributeName="Alpha"
            motion:customFloatValue="1.0" />
    </Constraint>
</ConstraintSet>

<ConstraintSet android:id="@+id/end">
    <Constraint
        android:id="@id/button"
        android:layout_width="64dp"
        android:layout_height="64dp"
        android:layout_marginEnd="8dp"
        motion:layout_constraintBottom_toBottomOf="parent"
        motion:layout_constraintEnd_toEndOf="parent"
        motion:layout_constraintTop_toTopOf="parent">
        <CustomAttribute
            motion:attributeName="Alpha"
            motion:customFloatValue="0.2" />
    </Constraint>
</ConstraintSet>

Thanks.

abhigit-hub commented 5 years ago

I also tried the same example as above and saw the issue with attributeName 'alpha' and 'visibility'. The translation in between states works fine, but when the transition to end state is complete, the alpha is reset.

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

<Transition
    motion:constraintSetEnd="@id/start"
    motion:constraintSetStart="@id/end"
    motion:duration="1000">
    <OnSwipe
        motion:dragDirection="dragDown"
        motion:touchAnchorId="@+id/view"
        motion:touchAnchorSide="bottom" />
</Transition>

<ConstraintSet android:id="@+id/start">
    <Constraint
        android:id="@+id/view"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="8dp"
        motion:layout_constraintEnd_toEndOf="parent"
        motion:layout_constraintStart_toStartOf="parent"
        motion:layout_constraintTop_toBottomOf="@+id/toolbar">

        <CustomAttribute
            motion:attributeName="alpha"
            motion:customFloatValue="1.0" />
    </Constraint>
</ConstraintSet>

<ConstraintSet android:id="@+id/end">
    <Constraint
        android:id="@+id/view"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="16dp"
        motion:layout_constraintBottom_toBottomOf="parent"
        motion:layout_constraintEnd_toEndOf="parent"
        motion:layout_constraintStart_toStartOf="parent">

        <CustomAttribute
            motion:attributeName="alpha"
            motion:customFloatValue="0.0" />
    </Constraint>
</ConstraintSet>

EDIT

The reason it didn't work for me was that I was on 2.0.0-alpha3. And starting from 2.0.0-alpha3 there is a new XML format called PropertySet for alpha properties. Refer documentation

Replace the CustomAttribute tag with a PropertySet tag <PropertySet motion:alpha="0.2" />

bernaferrari commented 5 years ago

This is a bug that will be fixed on alpha 4.