我的MainActivity中有一个imageview。扩展我的 Bottom Sheet 时,MainActivity中的imageview应该更改其位置和大小。
有人可以带领我走上正确的轨道吗?

我试过在按钮单击上设置运动,这有效。我找不到通过展开 Bottom Sheet 来触发运动的方法。

我的最后一个想法是,获取 Bottom Sheet 的滑动偏移量并在运动中使用它……但是如何?

谢谢,GGK

MotionScene.xml

`

<Transition
    motion:constraintSetStart="@+id/start"
    motion:constraintSetEnd="@+id/end"
    motion:duration="1000">
    <OnClick
        motion:target="@+id/tv_test_button"
        motion:mode="toggle"/>

    <OnSwipe
        motion:touchAnchorId="@+id/bottomSheetLayout"
        motion:maxVelocity="1000"
        motion:dragDirection="dragUp"/>
</Transition>

<ConstraintSet android:id="@+id/start">
    <Constraint
        android:id="@+id/ivTest"
        android:layout_width="189dp"
        android:layout_height="180dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="84dp"
        android:layout_marginEnd="8dp"
        android:cropToPadding="false"/>

</ConstraintSet>

<ConstraintSet android:id="@+id/end">
    <Constraint
        android:id="@+id/ivTest"
        android:layout_width="84dp"
        android:layout_height="80dp"
        android:layout_marginStart="32dp"
        android:layout_marginTop="32dp"

        motion:srcCompat="@android:drawable/sym_def_app_icon" />


</ConstraintSet>

</MotionScene>`

最佳答案

找到了一种解决方案,可以在上下滑动时捕获 Bottom Sheet 位置:

   @Override
        public void onSlide(View bottomSheet, float slideOffset) {


            View rootView = bottomSheet.getRootView();
            float yBottomSheet = bottomSheet.getY();
         }

就是这样

K

关于java - 结合使用底部布局和MotionLayout的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56138970/

10-12 00:31
查看更多