如何在motionLayout中设置比例动画的枢轴点

时间:2019-12-13 15:35:05

标签: android android-constraintlayout android-motionlayout

我正在尝试在运动中设置ivotX和pivotY。

<Constraint android:id="@id/favChatRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:alpha="1"
        android:pivotY="0.0"
        android:pivotX="0.0"
        android:scaleY="1"
        android:scaleX="1"/>

在最后一幕:

<Constraint android:id="@id/favChatRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:alpha="1"
        android:pivotY="0.0"
        android:pivotX="0.0"
        android:scaleY="0"
        android:scaleX="0"/>

但是看来枢轴点没有任何作用。我仍在以轴心为中心的比例动画。有什么办法可以解决?

1 个答案:

答案 0 :(得分:3)

我找到了在滑动时更改文本大小的解决方案,但是我想您可以将其应用于常规的运动布局过渡。这是我的场景描述:

<Transition
    motion:constraintSetStart="@+id/start"
    motion:constraintSetEnd="@+id/end"
    motion:duration="1000">
    <OnSwipe
        motion:touchAnchorId="@+id/wv_file_content"
        motion:touchRegionId="@+id/v_web_view_touch_region"
        motion:touchAnchorSide="bottom"
        motion:dragDirection="dragUp" />

    <KeyFrameSet>
        <KeyAttribute
            android:scaleX="1.5"
            android:scaleY="1.5"
            motion:framePosition="100"
            motion:motionTarget="@+id/TEXTVIEW"
            />
    </KeyFrameSet>
</Transition>

到目前为止,这是您已经想到的。您不能像要求的那样直接在场景描述中设置轴心点,但可以在原始的layout.xml中间接设置它,例如@vitalnik描述。

必须直接在layout.xml中设置以下内容!不在场景描述xml中。

 <TextView
    android:id="@+id/TEXTVIEW"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:transformPivotX="0sp"
    android:transformPivotY="9sp" />

这将以一种可缩放的方式设置枢轴点,以使文本保持对齐。 我是怎么想到9sp的?我从here

获得了此计算结果

等于缩放模式(在sp中)的文本视图大小的1/2

原来是我的TextView 12sp。按比例缩放1.5表示在缩放模式下为18sp。 其中一半是9sp,这是我用于android:transformPivotY

的值

使用这种计算方法,您还可以使其保持正确对齐或任何您想要的形式。