Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ConstraintLayout : Flow
Search
Nabe
June 12, 2019
Programming
0
1.1k
ConstraintLayout : Flow
帰ってきた関西モバイルアプリ研究会#2
https://kanmoba.connpass.com/event/134059/
Nabe
June 12, 2019
Tweet
Share
More Decks by Nabe
See All by Nabe
カクヨムAndroidアプリのリブート
numeroanddev
0
520
GraphicsLayerのBitmap作成
numeroanddev
0
190
GraphQLとGigaViewer for Apps
numeroanddev
4
4k
Android アプリのプロジェクトをモダンにし続ける工夫
numeroanddev
1
700
Material 3で Material 2ぽい見た目にする
numeroanddev
2
600
Google I/O 2023 の 個人的おすすめセッションの紹介 / Introducing interesting sessions at Google IO 2023
numeroanddev
1
430
Jetpack ComposeのTalkback対応/Improve Talkback in Jetpack Compose
numeroanddev
0
540
Baseline Profilesでアプリのパフォーマンスを向上させる / Improve app performance with Baseline Profiles
numeroanddev
0
920
Jetpack Composeでアプリを開発して遭遇した問題
numeroanddev
0
710
Other Decks in Programming
See All in Programming
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
610
Cache Me If You Can
ryunen344
2
4.2k
私の後悔をAWS DMSで解決した話
hiramax
4
210
JSONataを使ってみよう Step Functionsが楽しくなる実践テクニック #devio2025
dafujii
1
650
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
550
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
4
1.5k
GitHubとGitLabとAWS CodePipelineでCI/CDを組み比べてみた
satoshi256kbyte
4
250
プロパティベーステストによるUIテスト: LLMによるプロパティ定義生成でエッジケースを捉える
tetta_pdnt
0
4.4k
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
11
4.5k
Swift Updates - Learn Languages 2025
koher
2
520
Testing Trophyは叫ばない
toms74209200
0
890
Namespace and Its Future
tagomoris
6
710
Featured
See All Featured
BBQ
matthewcrist
89
9.8k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Building an army of robots
kneath
306
46k
Agile that works and the tools we love
rasmusluckow
330
21k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
RailsConf 2023
tenderlove
30
1.2k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
Transcript
$POTUSBJOU-BZPVU'MPX ؔϞό ,B[VLJ8BUBOBCF
1SPpMF w ͳ w 5XJUUFS!/BCF$PUU w (JU)VC/6NFSP"OE%FW w 'FOSJS*OD w
"OESPJE"QQ%FWFMPQFS
8IBU`T'MPX w $POTUSBJOU-BZPVUBMQIB͔Β w 'MFYCPYͷΑ͏ͳϨΠΞτΛ࣮ݱͰ͖Δ w 7JFXͷ֊ΛϑϥοτʹอͯΔ w .PUJPO-BZPVUͱΈ߹ΘͤΔ͜ͱ͕Ͱ͖Δ
#BTJD <com.google.android.material.button.MaterialButton android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button1" /> <com.google.android.material.button.MaterialButton android:id="@+id/button2" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Button2" /> …
#BTJD <androidx.constraintlayout.helper.widget.Flow android:id="@+id/flowLayout" android:layout_width="0dp" android:layout_height="wrap_content" android:orientation=“horizontal” app:constraint_referenced_ids=“button1,button2,butt…” app:flow_wrapMode="aligned" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
#BTJD w Πϝʔδ
0SJFOUBUJPO w )PSJ[POUBM android:orientation="horizontal" w 7FSUJDBM android:orientation="vertical"
w )PSJ[POUBM w 7FSUJDBM 0SJFOUBUJPO
XSBQ.PEF w /POF app:flow_wrapMode="none" w $IBJO app:flow_wrapMode="chain" w "MJHO app:flow_wrapMode="none"
w $IBJO w "MJHO XSBQ.PEF
NBY&MFNFOUT8SBQ app:flow_maxElementsWrap=“integer"
NBY&MFNFOUT8SBQ
0UIFSBUUSJCVUFT w $IBJO4UZMF app:flow_verticalStyle="packed|spread|spread_inside" app:flow_horizontalStyle="packed|spread|spread_inside" w #JBT app:flow_verticalBias="float" app:flow_horizontalBias="float" w
"MJHO app:flow_horizontalAlign="start|end|center" app:flow_verticalAlign="top|bottom|center|baseline" w (BQ app:flow_verticalGap="dimension" app:flow_horizontalGap="dimension"
8JUI.PUJPO-BZPVU
<ConstraintSet android:id="@+id/start"> <Constraint android:id="@id/flowLayout"> <Layout android:layout_width="0dp" android:layout_height="wrap_content" motion:constraint_referenced_ids=“button1,button2,butt…” motion:layout_constraintEnd_toEndOf="parent" motion:layout_constraintStart_toEndOf="@id/sideLayout"
motion:layout_constraintTop_toTopOf="parent" /> </Constraint> <Constraint android:id="@id/button1"> <Layout android:layout_width="92dp" android:layout_height="92dp" /> </Constraint> … </ConstraintSet> 8JUI.PUJPO-BZPVU
<ConstraintSet android:id="@+id/end"> <Constraint android:id="@id/flowLayout"> <Layout android:layout_width="42dp" android:layout_height="0dp" motion:constraint_referenced_ids=“button2,button3,…” motion:layout_constraintBottom_toBottomOf="parent" motion:layout_constraintEnd_toEndOf="parent"
motion:layout_constraintStart_toEndOf="@id/sideLayout" motion:layout_constraintTop_toTopOf="parent" /> </Constraint> <Constraint android:id="@id/button1"> <Layout android:layout_width="120dp" android:layout_height="120dp" android:layout_marginTop="24dp" motion:layout_constraintEnd_toEndOf="@id/sideLayout" motion:layout_constraintStart_toStartOf="parent" motion:layout_constraintTop_toTopOf="parent" /> </Constraint> <Constraint android:id="@id/button2"> <Layout android:layout_width="42dp" android:layout_height="42dp" /> </Constraint> … </ConstraintSet> 8JUI.PUJPO-BZPVU
None
None
None
w IUUQTBOESPJETUVEJPHPPHMFCMPHDPN DPOTUSBJOUMBZPVUBMQIBIUNM w IUUQTBOESPJETUVEJPHPPHMFCMPHDPN DPOTUSBJOUMBZPVUCFUBIUNM w IUUQTEFWFMPQFSBOESPJEDPNSFGFSFODFBOESPJE TVQQPSUDPOTUSBJOUIFMQFS'MPXIUNM