目录
2.创建 MotionLayout 文件和MotionScene文件
一、什么是MotionLayout
MotionLayout是ConstraintLayout的子类,是一种可以管理应用中的运动和微件动画的布局类型,它可以帮助安卓开发者关联手势和组件动画。MotionLayout最突破性的一点是它支持在XML中完全描述一个复杂的动画,而不需要通过Java、kotlin等代码来实现。
二、入门使用步骤
1.添加依赖
要在项目中使用MotionLayout,必须在应用的build.gradle文件中添加 ConstraintLayout 2.0 或更新版本的依赖项
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
2.创建 MotionLayout 文件和MotionScene文件
MotionLayout 是 ConstraintLayout 的子类,可以通过直接替换布局资源文件中的类名称,将任何现有的 ConstraintLayout 转换为 MotionLayout,个人觉得通过打开布局文件,然后Component Tree 栏选中选择ConstraintLayout ,右击,在菜单栏中点击 Covert to MotionLayout 选项转换比较方便,还可以自动生成MotionScene文件
转换后Android Studio会自动在res/xml/目录下生成一个MotionScene文件
通过在布局文件中声明layoutDescription将MotionScene文件和布局文件关联在一起
app:layoutDescription="@xml/activity_main_scene"
MotionScene 是一个 XML 资源文件,其中包含相应布局的所有运动描述,为了将布局信息与运动描述分开,每个 MotionLayout 都引用一个单独的 MotionScene。这其实就是MotionLayout 和 ConstraintLayout的主要区别:MotionLayout比ConstraintLayout多了运动的部分。
接下来在MotionScene文件中定义一系列属性就可以让布局文件中的组件动起来了。
3.一些常用的的运动场景文件元素及属性
<MotionScene>:运动场景文件的根元素。
<ConstraintSet>:指定所有视图在运动序列中某一点处的位置和属性。
<Constraint>:指定运动序列中其中一个元素的位置和属性。
<Transition>:指定运动序列的开始和结束状态、任何所需的中间状态以及触发该序列的用户交互。
<onClick>:指定当用户点按特定视图时要执行的操作。
<onSwipe>:指定当用户在布局上滑动时要执行的操作。
<KeyFrameSet>:指定运动序列过程中视图的位置和属性。
<KeyPosition>:指定视图在运动序列中特定时刻的位置。
<KeyAttribute>:指定视图在运动序列中特定时刻的属性。
以上元素和属性都是在MotionScene文件中使用的,一些更具体的使用方法会在接下来实例中详细说明。
三、轮播图效果的展示
如图,可以实现“春”、“夏”、“秋”、“冬”四张图片的层次化展示以及手动轮播效果,支持滑动切换到上一张或下一张,且滑动后图片循环顺序不变。
四、轮播图效果的实现
1.在布局文件中添加界面元素
这一步添加了两种元素:Guideline和ImageView。
Guideline元素充当辅助线可以帮助我们更好的设置图片的位置。layout_constraintGuide_percent用于指定在父控件中的宽度或高度的百分比。
<androidx.constraintlayout.widget.Guideline
android:id="@+id/gl1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.2" />
<androidx.constraintlayout.widget.Guideline
android: