动画Androidandroid技术

Android新控件之MotionLayout 动画管理布局简单

2022-01-14  本文已影响0人  没有了遇见
效果

开局三连,MotionLayout 是什么?,MotionLayout 是做什么的呢????,MotionLayout 怎么用呢???

1. MotionLayout 是什么呢???

MotionLayout 是ConstraintLayout 2.0 版本以后新增的一个继承于ConstraintLayout的一个新布局

2. MotionLayout 是做什么的呢???

MotionLayout 是一种布局类型,可帮助您管理应用中的运动和微件动画。MotionLayoutConstraintLayout 的子类,在其丰富的布局功能基础之上构建而成。作为 ConstraintLayout 库的一部分,MotionLayout 可用作支持库,并可向后兼容 API 级别 14

3. MotionLayout 怎么用呢???

MotionLayout 在ConstraintLayout 2.0 包下,所以直接引用ConstraintLayout 2.0的包就可以直接因引用了

implementation 'androidx.constraintlayout:constraintlayout:2.1.2'

具体什么时候用到MotionLayout呢 ?

MotionLayout提供了对其直属的子View提供各种变换功能,所以当我们需要控制页面多个子控件伴随动效的时候MotionLayout就可以很好的完成任务了

示例:

<?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/end"
        motion:constraintSetStart="@+id/start"
        motion:duration="1000">
        <!-- 触摸属性 -->
        <OnSwipe
            motion:dragDirection="dragDown"
            motion:touchAnchorId="@+id/button"
            motion:touchAnchorSide="bottom" />
    </Transition>

    <!-- 是定义描述您的运动的各种限制条件的位置 -->
    <!-- 开始的View限制 -->
    <ConstraintSet android:id="@+id/start">
        <!-- 条件限制 -->
        <Constraint
            android:id="@+id/button"
            android:layout_width="200dp"
            android:layout_height="64dp"
            motion:layout_constraintEnd_toEndOf="parent"
            motion:layout_constraintStart_toStartOf="parent"
            motion:layout_constraintTop_toTopOf="parent">
             <!--  自定义条件限制,backgroundColor:方法名,customColorValue:参数类型 并且必须与具有
             getter 和 setter 方法的对象匹配-->
            <!-- 设置背景色 -->
            <CustomAttribute
                motion:attributeName="backgroundColor"
                motion:customColorValue="#D81B60" />
            <!--           设置文字-->
            <CustomAttribute
                motion:attributeName="text"
                motion:customStringValue="开始" />
        </Constraint>
    </ConstraintSet>

    <!-- 结束的View限制  -->
    <ConstraintSet android:id="@+id/end">
        <Constraint
            android:id="@+id/button"
            android:layout_width="200dp"
            android:layout_height="64dp"
            android:layout_marginBottom="8dp"
            motion:layout_constraintBottom_toBottomOf="parent"
            motion:layout_constraintEnd_toEndOf="parent"
            motion:layout_constraintStart_toStartOf="parent">

            <CustomAttribute
                motion:attributeName="backgroundColor"
                motion:customColorValue="#9999FF" />
            <CustomAttribute
                motion:attributeName="text"
                motion:customStringValue="结束" />
        </Constraint>
    </ConstraintSet>

</MotionScene>
        

下边介绍下MotionLayout用到的重点方法以及类

总结

MotionLayout 整合了Android动画操作,让开发者可以处理一些相对复杂的动画页面,效果很棒,且最低兼容到API 14 .所以以后的时间,我会一点点的学习这个新控件,争取写成个系列

参考文献

1.Google的MotionLayout介绍说明

2.MotionLayout的文档简介

3.MotionLayout 源码地址

上一篇下一篇

猜你喜欢

热点阅读