前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。
👉点击跳转到教程
一.创建一个类CircularRevealHelper继承ConstraintHelper代码如下
/*** @Author: ly* @Date: 2024/2/22* @Description: 实现过渡动画*/
class CircularRevealHelper(context: Context?, attrs: AttributeSet?) :ConstraintHelper(context, attrs) {override fun updatePostLayout(container: ConstraintLayout) {super.updatePostLayout(container)referencedIds.forEach {val view = container.getViewById(it)// 根据引用的 ID 获取对应的视图val radius = hypot(view.width.toDouble(),view.height.toDouble()).toInt() // 计算半径,使用勾股定理计算两边的平方和再开方ViewAnimationUtils.createCircularReveal(view,0,0,0f,radius.toFloat())// 创建 CircularReveal 动画效果.setDuration(2000L)// 设置动画持续时间为 2000 毫秒.start() // 启动动画}}
}
继承ConstraintHelper的作用:继承 ConstraintHelper 类的主要目的是为了在自定义 CircularRevealHelper 类中重用 ConstraintLayout 的布局约束和属性。ConstraintHelper 是用于帮助管理和操控 ConstraintLayout 中子视图的辅助类,它可以帮助开发者更方便地管理视图之间的约束关系。
通过继承 ConstraintHelper 类,CircularRevealHelper 类可以继承 ConstraintLayout 的功能,并且可以通过调用父类的方法来获取 ConstraintLayout 中的子视图,进而对这些子视图进行 CircularReveal 动画的实现。这样做可以提高代码的重用性,同时也符合面向对象编程的设计原则,使得代码更加模块化、可维护和可扩展。
之后在将该CircularRevealHelper类在xml布局引入即可使用。
layout_circular_reveal.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"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/iv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><ImageViewandroid:id="@+id/iv2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><ImageViewandroid:id="@+id/iv3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /><com.example.customviewtouchdrag.CircularRevealHelperandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:constraint_referenced_ids="iv1,iv2,iv3"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
之后运行即可得到效果: