我想"滑入"使用约束集和过渡管理器在Constraint布局中查看动画。为此,我需要将我的视图放在父视图下面。因此它将从屏幕滑出并向后滑动屏幕。在Constraint Layout中可以吗?
在代码中,我需要在父视图下方的index_navigation
位置。
<TextView
android:id="@+id/page_number"
style="@style/RoundBackgroundStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/page_number_round_bg"
android:textColor="#fff"
android:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<me.example.ui.extensions.PageNavigator
android:id="@+id/index_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/index_scroll_background"
android:clickable="true"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent"
>
<TextView
android:id="@+id/index_navigation_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:textColor="@color/colorPrimaryLight"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
/>
</me.example.ui.extensions.PageNavigator>
动画代码
val constraintSet1 = ConstraintSet()
constraintSet1.clone(rootView)
val constraintSet2 = ConstraintSet()
constraintSet2.clone(this, R.layout.activity_main)
constraintSet2.setTranslationY(R.id.index_navigation, 150f)
viewModel.shouldShowIndexPagerLiveEvent.observe(this, Observer { shouldShow ->
shouldShow?.let {
TransitionManager.beginDelayedTransition(rootView)
val constraint = if (it) constraintSet1 else constraintSet2
constraint.applyTo(rootView)
}
})
答案 0 :(得分:0)
您是否尝试过设置index_navigation的位置?这样的事情。
index_navigation_view.setY(parent_view_height)
答案 1 :(得分:0)
我看到您已经找到了答案,但是我想我会提出另一个存在的可能性,那就是使用MotionLayout(这是ConstraintLayout的扩展),可用于API 18及更高版本。
这是开发人员教程的link。