Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ConstraintLayoutをもうちょっと深く知ってみる
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
takahirom
September 15, 2017
200
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ConstraintLayoutをもうちょっと深く知ってみる
takahirom
September 15, 2017
More Decks by takahirom
See All by takahirom
AIエージェントで 変わるAndroid開発環境
takahirom
3
880
AndroidアプリのAI実装をAndroidifyで学ぶ ー Google公式サンプルによる体験と実装 ー
takahirom
0
160
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
1.1k
Google の LLM ライブラリ を Android アプリで 使うには?
takahirom
1
2.2k
Robolectric Native Graphics and Roborazzi
takahirom
1
2.4k
Androidアプリで安定して動作させ継続的に開発するために設計の原則を利用して開発した話
takahirom
3
1.5k
Android Tools & Performance
takahirom
1
1.3k
Jetpack Compose State Practices
takahirom
1
1.5k
Inside Jetpack Compose
takahirom
1
1.1k
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
13
39k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
830
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
4 Signs Your Business is Dying
shpigford
187
23k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
730
Scaling GitHub
holman
464
140k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
New Earth Scene 8
popppiees
3
2.6k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
420
The agentic SEO stack - context over prompts
schlessera
0
930
Google's AI Overviews - The New Search
badams
0
1.6k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
480
Transcript
$POTUSBJOU-BZPVU ֲ㼰׃帾ֻ濼ג UBLBIJSPN
˖ "OESPJEָ㥨ֹ ˖ UBLBIJSPNהְֲせד 2JJUBהַ剅ְגְךד ״׃ֶֻ격ְ׃תׅ 荈䊹稱➜
˖ (PPHMF*0،فٔך،صً٦ءّٝ ˖ $POTUSBJOU-BZPVUד㹋鄲ׁגְ׃ ְ ˖ װגְ ַֹֽ
˖ $POTUSBJOU ⵖ秈 ⢪ٖ؎،ؐز ˖ ؿٓحزזٖ؎،ؐزחדֹ ˖ ٖ؎،ؐزؒر؍ةה鸬䵿ׅ ˖ "OESPJE4UVEJPךرؿٕؓز
˖ זו ְְהְֿםְ֮ $POTUSBJOU-BZPVUהכ
˖ ֿתד׳ה׃ٖ؎،ؐزכ⡲ֿהָ ֽ֮וծ ׯה锃ץֿהכזְ➂ぢֽ ˖ 荈ⴓָ锃ץגגծ锃ץתדח濼זַֿ ה⚥䗰ח稱➜ ˖ 2JJUBחⰕ׃גְךדגְֻׁ ˖
ջ$POTUSBJOU-BZPVUֲ㼰׃帾ֻ濼גռ ➙傈鑧׃ְֿה
㛇劤涸זהֿ ָֿ䠐ׅהֿכ
㛇劤涸זהֿ
$POTUSBJOU-BZPVUYדך堣腉 ♧鿇 ˖ #JBT ˖ $IBJO ˖ (VJEF-JOF ˖ $POTUSBJOU4FU
˖ (0/&ךהֹך䮙⹛חאְג
#JBT ˖ YFEַXSBQ@DPOUFOU ךהֹח鏣㹀〳腉 ˖ 㞮歲简ַוְּ ꨄגְַⵖ䖴
$POTUSBJOU4FU⢪ג #JBT㢌刿 ConstraintSetΛ͏͜ͱͰ ConstraintLayoutͷϓϩύςΟΛ มߋ͢Δ͜ͱ͕Ͱ͖Δ(ޙड़)
#JBT ˖ 兛媮ך䊩㺔ׇדծ 歗ָ杞ֻזהֹךو٦آٝ然⥂דֹ
$POTUSBJOU-BZPVUYדך堣腉 ♧鿇 ˖ #JBT ˖ $IBJO ˖ (VJEF-JOF ˖ $POTUSBJOU4FU
˖ (0/&ךהֹך䮙⹛חאְג
$IBJO ˖ ➭ך7JFXה㣐ֹׁ侭ִ ״ֲז䕎דךٖ؎،ؐزָ 〳腉 ˖ 㛇劤כ̒ך⹛歗ך乼⡲ד0,
$IBJO ˖ $IBJO4UZMFהְֲ銲稆 $)"*/@413&"% $)"*/@413&"%@*/4*%& $)"*/@1"$,&%ה ⴖ剏ִגְ ⟃♴ך״ֲז䕎דYNMד鎸鶢ׁ app:layout_constraintHorizontal_chainStyle="spread_inside"
$IBJOXFJHIU -JOFBS-BZPVUדֶזׄךXFJHIU⢪ִ ח׃גְ ཁૉΛmatch constraint(0dp)ʹͨ͠ঢ়ଶͰ app:layout_constraintHorizontal_weight="1"
$POTUSBJOU-BZPVUYדך堣腉 ♧鿇 ˖ #JBT ˖ $IBJO ˖ (VJEF-JOF ˖ $POTUSBJOU4FU
˖ (0/&ךהֹך䮙⹛חאְג
(VJEF-JOF ˖ رؠ؎ٝ♳ד㛇彊הז简䒷ֽגծ ַֿ7JFXꂁ縧דֹ ˖ EQ䭷㹀ֽדזֻךⶴさד䭷㹀דֹ ⚵ְהֿ䬃ׅהⴖ剏ִדֹ app:layout_constraintGuide_percent="0.5"
$POTUSBJOU-BZPVUYדך堣腉 ♧鿇 ˖ #JBT ˖ $IBJO ˖ (VJEF-JOF ˖ $POTUSBJOU4FU
˖ (0/&ךהֹך䮙⹛חאְג
$POTUSBJOU4FU ϓϩάϥϜ͔ΒConstraintΛઃఆ͢ΔͨΊͷΫϥε LayoutParamsͱͷҧ͍ɺ શͯͷViewͷConstraintΛऔಘɺมߋɺөͰ͖Δ
$POTUSBJOU4FU ➙֮$POTUSBJOU-BZPVUַ$POTUSBJOU4FU《䖤 val constraintSet = ConstraintSet() constraintSet.clone(constraintLayout)
$POTUSBJOU4FU ٖ؎،ؐزַ$POTUSBJOU4FU《䖤 val constraintSet = ConstraintSet() constraintSet.clone(context, R.layout.bigimage)
$POTUSBJOU4FU $POTUSBJOU4FU$POTUSBOU-BZPVUח僥 constraintSet.applyTo(constraintLayout)
$POTUSBJOU4FU⢪ג#JBT 㢌刿
$POTUSBJOU4FU⢪ג#JBT 㢌刿 val constraintSet = ConstraintSet() constraintSet.clone(constraintLayout) val bias =
0.5F constraintSet .setVerticalBias(R.id.button, bias) constraintSet.applyTo(constraintLayout) $POTUSBJOU-BZPVUך؎ٝأةٝأַ $POTUSBJOU4FU《䖤
$POTUSBJOU4FU⢪ג#JBT 㢌刿 val constraintSet = ConstraintSet() constraintSet.clone(constraintLayout) val bias =
0.5F constraintSet .setVerticalBias(R.id.button, bias) constraintSet.applyTo(constraintLayout) JE䭷㹀׃ג#JBT㢌刿ׅ
$POTUSBJOU4FU⢪ג#JBT 㢌刿 val constraintSet = ConstraintSet() constraintSet.clone(constraintLayout) val bias =
0.5F constraintSet .setVerticalBias(R.id.button, bias) constraintSet.applyTo(constraintLayout) ٖ؎،ؐزח僥
$POTUSBJOU4FU⢪ג $POTUSBJOU-BZPVUךٖ؎،ؐز㢌刿 ˖ ➭חׁתׂתזًاحسָ֮㢌刿דֹ
$POTUSBJOU-BZPVUYדך堣腉 ♧鿇 ˖ #JBT ˖ $IBJO ˖ (VJEF-JOF ˖ $POTUSBJOU4FU
˖ (0/&ךהֹך䮙⹛חאְג
(0/&ךהֹך䮙⹛חאְג ConstraintLayoutView͕GONEͷͱ͖ͷڍಈαϙʔτ ͍ͯ͠Δ ConstraintLayoutͷதͷView͕GONEʹͳͬͨͱ͖ͦͷ View͕0 x 0ͰMargin0ʹ
(0/&ךהֹך䮙⹛חאְג (0/&חז7JFX撑׃גְٖ؎،ؐزד (0/&חזהֹךو٦آٝך㣐ֹׁ鏣㹀ֿׅהָדֹ app:layout_goneMarginLeft="200dp"
$POTUSBJOU-BZPVU#FUBדך 堣腉
$POTUSBJOU-BZPVU#FUBדך 堣腉
$POTUSBJOU-BZPVU#FUBדך 堣腉 ˖ #BSSJFS ˖ (SPVQ ˖ 1MBDFIPMEFS ˖ QFSDFOUEJNFOTJPO
#BSSJFS ֿך״ֲזٖ؎،ؐزד 〸ך&EJU5FYU䲧ִ䕎ד⡲ה 兛鸐כ♳ך䕎חזתׅ ְֲֲֿ儗ח#BSSJFSָ⢪ִתׅկ رٌד⢪ְ倯鍑铡
#BSSJFS #BSSJFSך♴ח7JFX䭯גֻ 鼘ׇֽׁחٖ؎،ؐز ⡲؎ً٦آ "EE7FSUJDBM#BSSJFSד#BSSJFS鷄⸇
#BSSJFS #BSSJFS⡲㜥䨽 䭷㹀 5FYU7JFXך〸⩎ח #BSSJFS⡲ְךד SJHIUתכFOE䭷㹀
#BSSJFS ָֿ#BSSJFS ˖ ת׆➙אְגְ 5FYU7JFXפך $POTUSBJOUꤐ
#BSSJFS ָֿ#BSSJFS ˖ ➿ח#BSSJFSח $POTUSBJOUאֽ
#BSSJFSך⢪ְ䨽 ٖ؎،ؐز勴⟝ד "#ذأزהַדծ(0/&׃גⴖ剏ִהַ׃גְ儗זו
$POTUSBJOU-BZPVU#FUBדך 堣腉 ˖ #BSSJFS ˖ (SPVQ ˖ 1MBDFIPMEFS ˖ QFSDFOUEJNFOTJPO
(SPVQ (SPVQ⢪ֲה♧孡ח(SPVQד䭷㹀׃ ךךWJTJCJMJUZ㢌ִדֹ $IBJOדך⢽
(SPVQ ⢪ְ倯כ㛇劤涸ח#BSSJFSה♧筰 ⟃♴ך؝٦سד♧孡ח7JFXך7JTJCJMJUZ㢌刿 findViewById<Group>(R.id.Group).visibility = View.GONE
$POTUSBJOU-BZPVU#FUBדך 堣腉 ˖ #BSSJFS ˖ (SPVQ ˖ 1MBDFIPMEFS ˖ QFSDFOUEJNFOTJPO
1MBDFIPMEFS ˖ ֿ㹋鄲׃ְגז וֲװגװתׅ $POTUSBJOU-BZPVU⢪ֲהֽֿד㹋鄲דֹתׅ val onClickListener: (View) -> Unit
= { view -> TransitionManager.beginDelayedTransition(root as ViewGroup) placeholder.setContentId(view.id) } imageA.setOnClickListener(onClickListener) imageB.setOnClickListener(onClickListener) imageC.setOnClickListener(onClickListener) imageD.setOnClickListener(onClickListener)
1MBDFIPMEFS ˖ ת׆➙㔐כ،؎ذيך$IBJO⡲
1MBDFIPMEFS 如ח1MBDFIPMEFS鏣縧ׅ <android.support.constraint.Placeholder android:id="@+id/placeholder" ... app:content="@+id/image_d" ... /> ֿֿדכ㣐ֹֻׅ״ֲח1MBDFIPMEFSח $POTUSBJOU鏣㹀
䊩〸ַךꥴז׃זו app:content=“@+id/image_d” ך״ֲח$IBJOך⚥ח֮7JFXךJE 鏣㹀ֿׅהד䊩ך״ֲז邌爙חז
1MBDFIPMEFS 5SBOTJUJPO.BOBHFSCFHJO%FMBZFE5SBOTJUJPO ד،صً٦ءׇׁّٝאאծ QMBDFIPMEFSTFU$POUFOU*Eׅל䊩ך״ֲחז val onClickListener: (View) -> Unit
= { view -> TransitionManager.beginDelayedTransition(root as ViewGroup) placeholder.setContentId(view.id) } imageA.setOnClickListener(onClickListener) imageB.setOnClickListener(onClickListener) imageC.setOnClickListener(onClickListener) imageD.setOnClickListener(onClickListener)
$POTUSBJOU-BZPVU#FUBדך 堣腉 ˖ #BSSJFS ˖ (SPVQ ˖ 1MBDFIPMEFS ˖ QFSDFOUEJNFOTJPO
QFSDFOUEJNFOTJPO ˖ 簚埆ךنةٝ ֿז䠬ׄד䭷㹀ׅל㹋植דֹ android:layout_width="0dp" app:layout_constraintWidth_default="percent" app:layout_constraintWidth_percent=“0.5" %FQSFDBUFEחז 1FSDFOU4VQQPSU-JCSBSZך縧ֹ䳔ִָ䯴ֲ
$POTUSBJOU-BZPVUה ،صً٦ءّٝ
$POTUSBJOU-BZPVUה ،صً٦ءّٝ $POTUSBJOU-BZPVU⢪ٖ؎،ؐز א欽䠐ׅ ،صً٦ءّٝה،صً٦ءّٝ䖓ך ٖ؎،ؐز
$POTUSBJOU-BZPVUה ،صً٦ءّٝ
$POTUSBJOU-BZPVUך؎ٝأةٝأַ $POTUSBJOU4FU《䖤
ٖ؎،ؐزؿ؋؎ַٕ $POTUSBJOU4FU《䖤
וך$POTUSBJOU4FU⢪ֲַ寸
5SBOTJUJPO.BOBHFSCFHJO%FMBZFE5SBOTJUJPOד 如ךٖ؎،ؐز㢌刿儗ח،صً٦ءّׅٝ״ֲחׅ DPOTUSBJOU4FUBQQMZ5P ד$POTUSBJOU4FUח僥
$POTUSBJOU-BZPVUה ،صً٦ءّٝ $POTUSBJOU4FUה5SBOTJUJPO.BOBHFSCFHJO%FMBZFE5SBOTJUJPO 穈さׇֿהד،صً٦ءّٝדֹ ➙㔐כٖ؎،ؐزַ$POTUSBJOU4FU《䖤׃ָծ فؚٗٓيַ$POTUSBJOU4FUְׄג ،صً٦ءׇֿׁّٝה〳腉 (PPHMF*0،فٔכֿח$VTUPN5SBOTJUJPO穈さׇג ה갹䓸גְ
➙㔐כ铡僇׃זְ
$POTUSBJOU-BZPVUך䭁䓸䚍 #BSSJFSװ(SPVQכ$POTUSBJOU)FMQFSؙٓأ竰䪫׃ג㹋植ׁגְ 7JFXךٓ؎ؿ؟؎ؙٕךة؎ىؚٝדծ 䭷㹀ׁ7JFX⢪ג乼⡲⳿勻 ؕأةي׃ך知⽃ח⡲ג Ⱅ䒭ח؟ه٦ز׃גְ <com.github.takahirom.constraint_layout_samples.Blink android:layout_width="wrap_content" android:layout_height="wrap_content" app:constraint_referenced_ids="textView,imageView"
/>
$POTUSBJOU-BZPVUך䭁䓸䚍 VQEBUF1SF-BZPVU ؔ٦غ٦ٓ؎س׃גⳢ椚䊴׃鴥דְ ׯה׃⢪ְ倯כسًُؗٝزָ⳿גַחזֲ
תה ˖ ְזٖ؎،ؐزך堣腉ָⰅגְגծ 穠圓ְזػة٦ٝח黝䘔דֲֹ ˖ ֮玎䏝䭁䓸דֹ״ֲח⡲ג֮ ˖ $POTUSBJOU-BZPVUָ䖉黅׃ְ ˖ ،صً٦ءّٝ知⽃חדֹ