Android中使用MotionLayout实现动画

每天学一点2021.8.24(Android-4)

今天所要分享的是Android中实现类似gif动画,通过xml配置实现一些动画效果。显示效果如下所示:
组件跟随滑动效果

实现步骤

1. 创建布局文件

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    app:layoutDescription="@xml/activity_main_scene"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25sp" />
</androidx.constraintlayout.motion.widget.MotionLayout>

其中tv_textview为应用动画的控件。

2. 创建动画配置文件

通过MotionLayout标签创建动画效果,设置app:layoutDescription 属性来配置动画。配置动画的xml文件需要在res的xml文件夹中进行创建,该文件位置如下图所示。
配置动画文件

  • ConstraintSet标签: 指定所有视图在运动序列中某一点处的位置和属性,一般情况下需要创建起始和终止两个状态。
  • Constraint标签: 指定运动序列中其中一个元素的位置和属性,需要配置应用动画view的id。
  • Transition标签: 指定运动序列的开始和结束状态、任何所需的中间状态以及触发该序列的用户交互,constraintSetStart属性用于配置起始状态,constraintSetEnd用于配置终止状态,duration属性用于配置动画所执行的时间。
  • OnClick标签:指定当用户点按特定视图时要执行的操作。单个 Transition 可以具有多个 onClick 节点,其中每个 onClick 可指定一个不同的目标视图和一个在点按此视图时要执行的其他操作。
    motion:targetId
    受监控的视图。当用户点按此视图时,将会发生转换。
    motion:ClickAction
    点按视图时要执行的操作。支持的值包括:
    transitionToStart
    为从当前布局到 元素的 motion::constraintSetStart 属性指定的布局添加动画效果。
    transitionToEnd
    为从当前布局到 元素的 motion:constraintSetEnd 属性指定的布局添加动画效果。
    jumpToStart
    从当前布局跳转到 元素的 motion::constraintSetStart 属性指定的布局。
    jumpToEnd
    从当前布局跳转到 元素的 motion:constraintSetEnd 属性指定的布局。
    toggle
    如果布局当前处于开始状态,请将动画效果切换为结束状态;否则,请将动画效果切换为开始状态。

到此就能够实现如上展示的效果,想要实现更多的动画效果可以参考官方文档,希望所分享的东西能够帮到你们。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值