当前位置:网站首页>ConstraintSet of animation of ContrstrainLayout
ConstraintSet of animation of ContrstrainLayout
2022-08-04 07:32:00 【Mr_Tony】
一、前言
ConstraintLayoutHas some of its own animation effects,比如:MotionLayout 、ConstraintSet.One of them is recorded hereConstraintSet的使用方式.In fact, this animation method can be usedMotionLayout替换掉的,and it will be simpler
二、使用方式
1、使用范围
使用ConstraintSetAnimate the keyframes of the layout to animate the movement,But the year of the animation changes position and size,无法改变颜色
2、使用xml方式
This way requires two servingsxml文件,Keep the controls that need to be moved the same in both layoutsid.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/constraint_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">
<TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/>
<Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击暴富" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
frame_two.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/constraint_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">
<TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" android:layout_marginTop="100dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity
class MainActivity : AppCompatActivity() {
var constraintLayout: ConstraintLayout ?= null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
constraintLayout = findViewById(R.id.constraint_layout)
lifecycleScope.launch {
delay(1000)
animateToKeyframeTwo()
}
}
private fun animateToKeyframeTwo() {
val constraintSet = ConstraintSet()
constraintSet.load(this, R.layout.frame_two)
TransitionManager.beginDelayedTransition(constraintLayout!!)
constraintSet.applyTo(constraintLayout)
}
}
3、使用代码方式
If you think the above way of using two layouts is not good,It can also be controlled using code,But the code will be more redundant
var constraintLayout: ConstraintLayout ?= null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
constraintLayout = findViewById(R.id.constraint_layout)
lifecycleScope.launch {
delay(1000)
animateToKeyframeOne()
}
}
private fun animateToKeyframeOne(){
val constraintSet = ConstraintSet()
constraintSet.clone(constraintLayout)
// constraintSet.clear(R.id.title) //Clear previous constraints
constraintSet.centerHorizontally(R.id.title, ConstraintSet.PARENT_ID)
//这个表示了R.id.title距离ConstraintSet.PARENT_ID The top distance is 100,后面的marginAccording to the second parameter, it is the margin from the other side
constraintSet.connect(R.id.title,ConstraintSet.TOP,ConstraintSet.PARENT_ID,ConstraintSet.TOP, 100)
TransitionManager.beginDelayedTransition(constraintLayout!!)
constraintSet.applyTo(constraintLayout)
}
三、参考链接
使用 ConstraintLayout 构建自适应界面 | Android 开发者 | Android Developers | 关键帧动画
[ConstraintSet](ConstraintSet | Android Developers)
[Android ConstraintLayout ConstraintSet动态布局](Android ConstraintLayout ConstraintSet动态布局_赵彦军的博客-CSDN博客)
边栏推荐
猜你喜欢
随机推荐
Error occurred while trying to proxy request项目突然起不来了
七夕情人节:中英文祝福短信送给你
fanuc机器人IO分配报警信号分配无效
MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
adb无法桥接夜神模拟器
Unable to preventDefault inside passive event listener due to target being treated as passive. See
matlab让我的旧手机起死回生
10个程序员可以接私活的平台和一些建议,赚麻...
【字符串】最小表示法
Produce definition 产品与行业分析 勤于思考 善于总结 强于表达
IDEA 控制台 中文乱码问题(如果网上教程都无法解决你的问题的话)
MMDeploy部署实战系列【第四章】:onnx,tensorrt模型推理
指定区域内随机填充圆之matlab实现
Centos通过Docker搭建MySQL的PXC集群
“需求370解决解决爬取章节之后主题讨论评论消失问题”工作总结
MySQL重置root密码
53个全球免费学术资源数据库整理,查资料写论文必备【开学必备】
MySQL内存淘汰策略
babylon 里面加gltf 模型
data:image/jpg;base64格式数据转化为图片









