美文网首页
Constraint Layout 2.0 新特性 - Laye

Constraint Layout 2.0 新特性 - Laye

作者: 筱湮 | 来源:发表于2023-01-16 00:22 被阅读0次

Layer是什么

Layer 作为一种新的辅助工具,可以在多个视图上创建一个虚拟的图层 (layer)。同 Flow 不同,它并不会对视图进行布局,而是对多个视图同时进行变换 (transformation) 操作

Layer本质是一个View,不会有层级嵌套的问题。

Layer适用场景

Layer 背景色

可以给多个视图设置共同的背景或者动画。设置背景的话跟直接使用View占位在ConstraintLayout设置背景是一个道理,只是控制起来更灵活,更方便。

如给一个TextView和ImageView设置背景色。之前的做法是给TextView和ImageView一个共同的父布局,给父布局设置背景色。现在用layer实现:
代码:

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.constraintlayout.helper.widget.Layer
        android:id="@+id/layer"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@color/teal_200"
        android:visibility="gone"
        app:constraint_referenced_ids="tvTitle,ivTitle"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:visibility="visible" />

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:text="Flow流式布局"
        android:textColor="@color/black"
        android:textSize="18sp"
        app:layout_constraintBottom_toBottomOf="@+id/ivTitle"
        app:layout_constraintEnd_toStartOf="@+id/ivTitle"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/ivTitle" />

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/ivTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:src="@mipmap/ic_launcher"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

运行结果如图1:


图1png

因为本质Layer是一个View,所以给Layer设置点击事件也相当于给整个卡片Item设置一个点击事件,非常优秀。

Layer 动画

Layer也可以给约束的View设置共同的动画,本质是给每个View设置动画,只是更便捷了一些,与Layer自身没有关系,Layer只是一个约束辅助类。
如想对多个视图整体进行旋转 (rotate)、平移 (translate) 或缩放 (scale) 操作,那么 Layer 将会是最佳的选择。

相关文章

网友评论

      本文标题:Constraint Layout 2.0 新特性 - Laye

      本文链接:https://www.haomeiwen.com/subject/xofocdtx.html