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
Jetpack compose をちょっと触ってみた / about jetpack comp...
Search
charcoJp
November 30, 2019
Programming
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jetpack compose をちょっと触ってみた / about jetpack compose
charcoJp
November 30, 2019
More Decks by charcoJp
See All by charcoJp
Google Play ストアの アプリ平均評価を改善した話 / Improved average rating of play store
charcojp
1
500
Other Decks in Programming
See All in Programming
AIエージェント時代のコードレビューを設計する
nogu66
6
2.5k
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
450
[KotlinConf Extended South Korea 2026] KotlinConf 2026 발표자 후기
wisemuji
0
100
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
150
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
270
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
270
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1.7k
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
220
不幸な GC
chencmd
0
880
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.8k
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
110
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
140
Featured
See All Featured
Amusing Abliteration
ianozsvald
1
290
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
Docker and Python
trallard
47
4.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
450
Rails Girls Zürich Keynote
gr2m
96
14k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
440
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
We Are The Robots
honzajavorek
0
340
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
810
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Transcript
+FUQBDLDPNQPTF Λͪΐͬͱ৮ͬͯΈͨ "OESPJEݚڀൃදձ
ࣗݾհ w ຊେथ!DIBSDP@KQ w BLJQQBגࣜձࣾ w "OESPJEΞϓϦ։ൃ w 'MVUUFSΞϓϦ։ൃ ࢝Ί͔ͨΓɻ
None
λʔήοτ w +FUQBDL$PNQPTFΛΒͳ͍ਓ w +FUQBDL$PNQPTFͷ໊લ͚͍ͩͬͯΔਓ
͢͜ͱ w +FUQBDL$PNQPTFͱ w ಛ w +FUQBDL$PNQPTF͕ඞཁʹͳͬͨཧ༝ w ؆୯ͳ+FUQBDL$PNQPTFͷίʔυղઆ w
ιʔεΛݟͯΈΔʢ࣌ؒ༨ͬͨΒʣ w ॴײ
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*ॻͨ͘ΊͷπʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*ॻͨ͘ΊͷπʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*ॻͨ͘ΊͷπʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*ॻͨ͘ΊͷπʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX
એݴత6*ʁ
ࡶʹݴ͏ͱ ॻ͍ͯ͋Δ௨Γʹ6*͕දࣔ͞ΕΔ ˞͕ࣝͳ͍ͷͰ৮Ε·ͤΜ
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*Λߏங͢ΔͨΊͷ࠷৽πʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX
// ఆٛ fun hoge(callback: () -> Unit) { print("Hoge!") callback()
} fun main() { hoge() { print("ऴΘͬͨΑ") } hoge({ print("ऴΘͬͨΑ") }) } Ҿͷ ͷ֎ʹDBMMCBDLͷ ॲཧΛهड़ Ҿͷதʹهड़ ҾͷؔΛ֎ͩ͠ग़དྷΔ
+FUQBDL$PNQPTFͱ w ωΠςΟϒ6*Λߏங͢ΔͨΊͷ࠷৽πʔϧΩοτ w 4%,ະόϯυϧ w ,PUMJOલఏ w એݴత6* w
3FBDU -JUIP 7VFKT 'MVUUFSʹ৮ൃ͞Εͨ w JO%FWFMPQFS1SFWJFX w "1*͕ະͰมߋ͕༧ఆ͞Ε͍ͯΔͨΊɺ൛Ͱ༻͠ ͳ͍͜ͱ w "OESPJE4UVEJP$BOBSZ
+FUQBDL$PNQPTF͕ඞཁʹͳͬͨཧ༝ w $PNQPOFOU"1*Λ͔Βߏங͍ͨ͠ w ྺ࢙తܦҢͰBOESPJEWJFXԼͷ࣮͕ෳࡶ w ΧελϜ6*ίϯϙʔωϯτ࡞Δͷ͕େม w 'SBHNFOU $VTUPN7JFX$VTUPN7JFX(SPVQ
w ͳͲͳͲɻ w Ҿ༻ݩ w IUUQTEFWFMPQFSBOESPJEDPNKFUQBDLDPNQPTF w IUUQTXXXZPVUVCFDPNXBUDI W7T4UZR-[YP
+FUQBDL$PNQPTF͕ඞཁʹͳͬͨཧ༝ w $PNQPOFOU"1*Λ͔Βߏங͍ͨ͠ w ྺ࢙తܦҢͰBOESPJEWJFXԼͷ࣮͕ෳࡶ w ΧελϜ6*ίϯϙʔωϯτ࡞Δͷ͕େม w 'SBHNFOU $VTUPN7JFX$VTUPN7JFX(SPVQ
w ͳͲͳͲɻ w Ҿ༻ݩ w IUUQTEFWFMPQFSBOESPJEDPNKFUQBDLDPNQPTF w IUUQTXXXZPVUVCFDPNXBUDI W7T4UZR-[YP
؆୯ͳ+FUQBDL$PNQPTFͷίʔυղઆ w "OESPJE4%,ͷ7JFX$PNQPTBCMF ߏՄೳͳ ؔ͠ɺͦͷؔͷπϦʔߏʹΑΓ6*͕ߏங͞ΕΔ w !$PNQPTBCMFBOOPUBUJPO w ؔʹ༩͢ΔߏՄೳͳؔͱͳΔ
w 5FYU #VUUPOͳͲͷΑ͘͏7JFXͱ'"#$BSEͳ Ͳͷ.BUFSJBM%FTJHOͰఆٛ͞Ε͍ͯΔ7JFXݱঢ়Ͱ ͋Δఔ༻ҙ͞Ε͍ͯΔ
5FYU @Composable fun Text( text: String, modifier: Modifier = Modifier.None,
style: TextStyle? = null, paragraphStyle: ParagraphStyle? = null, softWrap: Boolean = DefaultSoftWrap, overflow: TextOverflow = DefaultOverflow, // TODO(siyamed): remove suppress @SuppressLint("AutoBoxing") maxLines: Int? = DefaultMaxLines, selectionColor: Color = DefaultSelectionColor ) { Text( text = AnnotatedString(text), modifier = modifier, style = style, paragraphStyle = paragraphStyle, softWrap = softWrap, overflow = overflow, maxLines = maxLines, selectionColor = selectionColor ) }
5FYUར༻ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?)
{ super.onCreate(savedInstanceState) setContent { Text( text = "Hello World!", style = TextStyle( color = Color.Blue, fontSize = 24.sp ) ) } } }
-JTU7JFX w -JTU7JFX 3FDZDMFS7JFXʹ૬͢Δ$PNQPOFUͳ͍ w ݱঢ়ͰҎԼͷೋͭΛΈ߹Θ࣮ͤͯݱ͢Δ͜ͱʹͳΔ w 7FSUJDBM4DSPMMFS4DSPMM7JFX w $PMVNO-JOFBS-BZPVU
PSJFOUBUJPOWFSUJDBM
-JTUදࣔ @Composable fun MinimumListExampleScreen() { VerticalScroller { Column { (0..20).map
{ ListItem( text = it.toString(), onClick = { } ) Divider() } } } }
ιʔεΛݟͯΈΔ ʢ࣌ؒ༨ͬͨΒʣ
ॴײ w طଘͷ࣮ํ๏ΑΓΔ͔ʹָͰײతɻݸਓతʹTUBCMFʹͳͬͨΒΘͳ ͍ͱ͍͏બͳ͍ w ۪ʹॻ͍͍ͯ͘ͱωετ͕ਂͯ͘Մಡੑ͕Լ͕Γͦ͏ w ϝιουநग़ͯ͠!$PNQPTBCMFΛ͢ΕύʔπԽͰ͖ΔͷͰʹͳΒ ͳ͍ͱࢥ͏ɻͨͩTQBDFΠϯσϯτྲྀੴʹਏͦ͏ w
'MVUUFSͰͷܦݧ શͯΛ,PUMJOͰ͔͚Δ͚ͩͰՁ͕͋Δ w +BWB,PUMJOMBZPVUYNMTFUUJOHTYNMͳͲݴޠʗॻ͖ํ͕ҧ͏ ͨΊ಄ͷΓସ͕͑ൃੜ͢Δ͕ͦΕ͕ͳ͍ w એݴత6* w J04"OESPJEͱʹରԠ͢ΔϥΠϒϥϦΛ༻ҙͨ͠ϞόΠϧΞϓϦ։ൃ ऀͷඞमՊʹͳΔ w ৽͍͠ߟ͑ํͰ͋ΔͨΊɺҰ֮ͭ͑ͯ͠·͑ଞʹࣝΛྲྀ༻Ͱ͖Δ
͜ͷػձʹ+FUQBDL $PNQPTFΛ৮ͬͯΈͯ ͍͔͕Ͱ͠ΐ͏͔ʂ
͓ΘΓ