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で_半円のプログレスバーを作った話
Search
Swimmy
July 08, 2023
460
0
Share
Jetpack_Composeで_半円のプログレスバーを作った話
Swimmy
July 08, 2023
More Decks by Swimmy
See All by Swimmy
Android16 Migration Stories ~Building a Pattern for Android OS upgrades~
reoandroider
0
230
違いがワカルKotlinプログラマーへの道
reoandroider
0
160
違いのワカル Kotlinプログラマーへの道
reoandroider
0
260
[Jetpack Compose] 原理から見るSkippable対応
reoandroider
1
370
Androdアプリ開発におけるネストスクロール問題と向き合うの説明用途
reoandroider
0
3.3k
Androdアプリ開発におけるネストスクロール問題と向き合うの説明用途
reoandroider
0
3.2k
Androdアプリ開発におけるネストスクロール問題と向き合うの説明用途~NestedScrollInteropConnectionは何してるの?編~
reoandroider
0
2.9k
Roborazziを最大限に活用する(導入編)
reoandroider
0
360
Master of NestedScroll
reoandroider
0
16k
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Are puppies a ranking factor?
jonoalderson
1
3.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
200
Practical Orchestrator
shlominoach
191
11k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
300
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
340
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Transcript
Harada Reo DroidKaigi #名古屋 .collect {} Jetpack Composeで 半円のプログレスバーを作った話
Harada Reo CyberAgent Inc. どすこい塾 DroidKaigi Staff @RunningReo 自己紹介 /
Introduction
LTの目的 Jetpack Composeで 半円のプログレスバーを 作った時の経験談を話す ※誰かの役に立てるといいな🤩
LTの目次 1 半円のプログレスバーのデザイン 2 Layout Composableを使ってみる 3 端末依存をなくすために 4 今回の経験談から得られる学び
半円のプログレスバーのデザイン 1
半円のプログレスバーのデザイン とあるプロダクト開発にて 以下のようなデザインを実装することに。
半円のプログレスバーのデザイン どう実装する? 半円ってどう実装するんだろう? 画像のサイズはどうしよう? 端末依存は起きない? テキストの位置が絶妙・・ 他のコンポーネントも配置予定・・
Layout Composableについて 2
Layout Composableについて Composeが画面に届くまでは以下のプロセスを踏んでいる 多くの場合内部で行われているので意識することがない
Layout Composableについて コンポーネントのサイズの計算と配置に踏み込んだのが Layout Composable(SubcomposeLayout)
Layout Composableについて 半円はCanvasを用いると簡単に実装できる ※ 高さを2倍にする必要あり 描画エリアが埋まらない
Layout Composableについて 計測フェーズ ポイントは制約を決めること Constraintsに適切な値を。 最大の幅と高さ 最小の幅と高さ
配置フェーズ ポイントは エリアの確保とX座標の計算 計測フェーズで得た幅を 活用してX座標を決める Layout Composableについて
Layout Composableの流れ contentに関わるコンポーネントを全て渡す ↓ 画面幅や他のコンポーネントのサイズから制約を定義 ↓ measurePolicy内でコンポーネントの計測 ↓ 計測値などからX座標を定義して配置 L
a y o u t C o m p o s a b l e に つ い て
Layout Composableのメリデメの話 メリット 計測と配置に踏み込むことで殆どのレイアウトが可能 デメリット どうしても可読性が落ちる 宣言的UIによるコードの簡略化の旨みがなくなる 新卒が多いチームだと使うのは避けたほうが良いかも Layout Composableについて
端末依存をなくすために 3
端末依存をなくすために タブレット 小さな端末 全ての端末で同じデザインを再現するのは難しい しかし、ちょうど良いラインを探す ※ もっと最適なやり方があれば教えてください(Modifierのカスタムなど)
端末依存をなくすために 画面サイズに応じて Canvasのstroke値や サイズを微調整する
端末依存をなくすために タブレット 小さな端末 どの端末でも同じレイアウトを描画するのは難しいが よい調整ラインを見つけることができた ※ タブレットの使用率が低いアプリ
今回の経験談から得られる学び 4
今回の経験から得られる学び Layout Composableの 使い方について!!
今回の経験から得られる学び ではなく・・・
今回の経験から得られる学び エンジニアの意地と 全体最適化について
今回の経験から得られる学び エンジニアとして任された実装を完璧にこなすことは大事。 =エンジニアの意地 しかし、限られた時間の中で優先度順位をつけて重要なものを クリアにして損切りできることも大事にしたい。 =全体最適化
今回の経験から得られる学び 今回のケースだと・・ 完璧な実装はできていない 95%の現状から残り5%をやり切るには1日かかる それに対して投資コストに対する効果を天秤にかける 考え方もエンジニアにとって重要 エンジニアの意地を暴走させない(自戒)
Thank you