Constraint Layoutを掘り起こす


ConstraaintLayoutとは?


バージョン2.1.3ベースの合成

Constraint=制約
コンストレイント条件に基づいてレイアウトを構築する特徴があります.
このレイアウトでビューの位置を定義するには、1つ以上の水平コンストレイントと垂直コンストレイントを追加する必要があります.
ConstristantLayoutのすべてのビューは、同じレベルの他のビューまたは親レイアウトをコンストレイントして位置を決定するため、ビューをビューにグループ化する必要がなく、フラットなビュー階層を有します.

なぜ開発されたのでしょうか。


AndroidはLinearLayout、FrameLayout、Table Layoutなどのレイアウトを提供しています.そしてConstraaintLayoutは2016年に初めてGoogle I/Oで紹介された.これは、従来のRelativeLayoutがビューを位置決めする方法と似ていますが、RelativeLayoutの更新バージョンについては説明していません.
好奇心でもう少し掘るのが意外(?)事実を知った.
当時ConstraintLayoutは単独開発ではなく、新しいLayout Editorとともに開発された.
(2016年のGoogle I/Oビデオからも分かるように、彼はLayout Editorと一緒にConstraintLayoutを紹介した.もっと正確には、この文章にはConstraintLayoutを開発したNicolas Roardの講演内容が含まれている.)
造物主がアダムとイブを創造したことのたとえ.
だから二人を分けて考えるわけにはいかない.様々な資料を見て、Layout EditorとConstraintLayoutを開発した理由をまとめました.
  • アンドロイドデバイスの外観とサイズはますます多様化
  • のレイアウトはますます複雑になり、パフォーマンスの問題もますます顕著になっています.
    そのため、新しいLayout Editorを開発することで、レイアウトをよりシンプルで強力にすることができ、既存のレイアウトのみでLayout Editorの能力値を最大限に高めることができる限界があるため、組み合わせに適した柔軟なConstraintLayoutも一緒に開発された.
    参考資料
    1.Androidの新しい特徴-Google I/O 2016ビデオ
    2.Android Layouts:a newworld-Gogle I/O 2016ビデオ
    3.「開発者文書」ConstraintLayoutを使用したインタラクティブUIの構築
    4.『ConstraintLayout開発者直説』Android ConstraintLayoutの概念と使い方を征服

    でもRelativeLayoutはLegacy...



    GoogleのConstraaintLayoutに関する公式文書では、RelativeLayoutとの類似性について、以下に示す.
    RelativeLayoutと同様に、同級ビューと親レイアウトの関係ですべてのビューのレイアウトが決定されますが、RelativeLayoutよりも柔軟で、Android StudioのLayout Editorと組み合わせて使用しやすいです。

    似ているがより柔軟に使える程度でいつからか分からないが、Layout EditorのPaletteではRelativeLayoutがLegacy部分に属している.また、RelativeLayoutだけでなく、LinearLayoutはGoogleの公式ドキュメントにも以下の参考ボックスがあります.

    できるだけConstraintLayoutで表現します
    参考資料
    1.開発者の正式文書に対するレイアウト
    2.[開発者公式ドキュメント]線形レイアウト

    Layout Editorのビジュアルツールのみを使用してConstraintLayoutを構築


    その間、xmlコードを自分で作成する方法だけでレイアウトを整理します.これは、以前はレイアウトエディタでビジュアルツールを使用していたとき、私の目的を達成できなかったためです.したがって、通常はレイアウトエディタでsplitモードを使用し、xmlコードを直接作成し、プレビューコンセプトのみを使用します.

    しかし、新しいレイアウトエディタ(Android Studio 2.2以上)はxmlコードを直接記述せず、ドラッグ&ドロップのみでConstraintLayoutを作成したため、再挑戦することにした.
    ちょうどColldelabsのxmlコードを変更せずにConstraintLayoutを使用する例を見つけたので、この例に従ってやってみました.(上のリンクで例を見つけることができます.)この例に従った結果,xmlコードをこれまで直接編集したほうがよい.他は片側に置いて、ConstraintLayoutのBarrierを使うときに問題があります.詳細は同症状登録のイベントリンクで代用する.とにかく、ドラッグアンドドロップだけではConstraintLayoutのすべての機能を書くのは難しい!🤨

    ConstraaintLayoutバージョンについて


    ConstraintLayout Release Note
    Android Studioは非常に賢くなり、バージョン情報を閲覧することなく最新バージョンを維持できますが、Release Noteを閲覧する必要がある場合があります.今、私たちはグーグルで「ConstraintLayout Release Note」を停止し、上のリンクに入ります.

    ConstraaintLayout依存項目の追加


    ConstraintLayoutを使用することをお勧めしますので、Android Studioで基本的なアクティビティ画面を持つプロジェクトを作成するだけで、ConstraintLayoutを使用してレイアウトすることができます.だからこれ以上依存する必要はありません.

    直接追加する必要がある場合は、アプリケーションまたはモジュールの構築.gradleファイルを開き、次の依存項目を追加すればいいです.
    dependencies {
        implementation "androidx.constraintlayout:constraintlayout:2.1.3"
    }
    Composeを使用する場合は、Compose Dependencyを追加します.
    dependencies {
        implementation "androidx.constraintlayout:constraintlayout-compose:1.0.0"
    }