Android Studio 中MotinLayout的简单使用
创始人
2024-03-15 13:43:25
0次

​
一、什么是MotionLayout
MotionLayout 是一种布局类型,可帮助您管理应用中的运动和微件动画。MotionLayout 是 ConstraintLayout 的子类,在其丰富的布局功能基础之上构建而成。

二、使用MotionLayout的准备
1.添加MotionLayout依赖项

要在项目中使用 MotionLayout,请向应用的 build.gradle 文件添加 ConstraintLayout 2.0 依赖项。如果您使用了 AndroidX,请添加以下依赖项:

 dependencies {implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1'}

如果您没有使用 AndroidX,请添加以下支持库依赖项:

dependencies {implementation 'com.android.support.constraint:constraint-layout:2.0.0-beta1'}

本人配置如下(使用的是AndroidX,加入了第一个依赖项):

1)在这里插入图片描述
2)在这里插入图片描述
2、创建MotionLayout文件

MotionLayout 是 ConstraintLayout 的子类,因此您可以通过替换布局资源文件中的类名称,将任何现有的 ConstraintLayout 转换为 MotionLayout,如下面的示例所示:

 

下面的完整示例 MotionLayout 文件可用于创建图 1 中的运动:



3、创建MotionScene文件

在上述的 MotionLayout 示例中,app:layoutDescription 属性引用一个 MotionScene。MotionScene 是一个 XML 资源文件,其中包含相应布局的所有运动描述。为了将布局信息与运动描述分开,每个 MotionLayout 都引用一个单独的 MotionScene。请注意,MotionScene 中的定义优先于 MotionLayout 中的任何类似定义。

下面的示例 MotionScene 文件描述了图 1 中的基本水平运动:


其中:
Transition 包含运动的基本定义。

motion:constraintSetStart 和 motion:constraintSetEnd 指的是运动的端点。这些端点在 MotionScene 后面的 ConstraintSet 元素中定义。

motion:duration 指定完成运动所需的毫秒数。

OnSwipe 可让您通过轻触控制运动。

motion:touchAnchorId 指的是您可以滑动并拖动的视图。

motion:touchAnchorSide 表示我们从右侧拖动视图。

motion:dragDirection 表示拖动的进度方向。例如,motion:dragDirection=“dragRight” 表示当您向右拖动时,进度会增加。

ConstraintSet 是定义描述您的运动的各种限制条件的位置。在此示例中,我们为运动的每个端点定义一个 ConstraintSet。这些端点垂直居中(通过 app:layout_constraintTop_toTopOf=“parent” 和 app:layout_constraintBottom_toBottomOf=“parent”)。在水平方向上,端点位于屏幕最左侧和最右侧。
4、创建过程

1.可手动修改文件成MotionLayout文件和在XML文件下新建MotionScene文件
在这里插入图片描述
2.自动创建:

打开布局文件找到Component Tree栏选中后选择ConstraintLayout,点击后会自动将ConstraintLayout文件转换为MotionLayout文件,并在res/xml文件下自动生成MotionScene文件
在这里插入图片描述
在这里插入图片描述
三、MotionLayout的简单使用
实现组组件的基本触控移动

MotionLayout简单使用

图一 MotionLayout简单使用

四、总结
MotionLayout的使用可以让布局增加更多的可玩性,且入门难度不高,可以在平时的设计中应用,以此达到给设计的app锦上添花的效果。

作者:王乾钧

原文链接

​

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...