Slide 1

Slide 1 text

DroidKaigi 2018付録3 ノハナ社 の レイアウト戦略 株式会社ノハナ 瀬戸優之 @seto_hi

Slide 2

Slide 2 text

ノハナ社のレイアウト戦略 ● レイアウトどうしたらいいの?の ノハナ的回答 ● あくまで参考 ● みんな違ってみんないい

Slide 3

Slide 3 text

Q1 Q. レイアウトエディタ使ってます? A. 使ってません   ・意図しない要素が追加されるリスクが怖い   ・エンジニアが楽をしても結局はQAコストになる   ・ConstraintLayoutの属性はそんなに多くないです    ・覚えましょう ※eclipse時代から開発しているのでxmlに慣れすぎている

Slide 4

Slide 4 text

Q2 Q. レイアウトのRootはすべてConstraintLayoutですか? A. 違います   ConstraintLayoutな画面は多いですが、   measure回数が少なくなることと   保守性を考えて   レイアウトを組みます

Slide 5

Slide 5 text

Measure回数 ViewGroup Measure回数 FrameLayout 自身のMeasureSpecがEXACTLYなら1回 それ以外は2回されるViewあり LinearLayout WeightがないViewは1回 WeightをあるViewはだいたい2回 RelativeLayout 2回 ConstraintLayout Viewのサイズが固定値なら1回 そうでなければ2〜最大3回 ただし別途複数回レイアウト計算が走る

Slide 6

Slide 6 text

ConstraintLayout利点 ● 階層が浅くなりやすい ○ 自由度が高い ○ だいたいのレイアウトに対応できる!すごい! ● RootをConstraintLayoutにすると、 レイアウトを大幅に変更しても対応しやすい ● 多機能 ○ Groupなど

Slide 7

Slide 7 text

ConstraintLayout欠点 ● 簡単なレイアウトには計算が多すぎる ○ いい感じのレイアウトではmeasureがほぼ2回走る ○ 現状の端末では十二分に高速だとは思うが.. ■ 簡単なレイアウトなので複雑な計算しても高速 ● 記述が多い ○ 例えば縦組みレイアウトなら LinearLayoutの方が記述も少なく処理も高速 人間の目にも優しい

Slide 8

Slide 8 text

ノハナ流 ViewGroup決定メソッド LinearLayout RelativeLayout CosntraintLayout 縦 or 横一直線な レイアウト レイアウトが直近で 修正される可能性が 高い RelativeLayoutでも 実現できそう YES NO でもConstraintLayoutを 使うと楽

Slide 9

Slide 9 text

Q3 Q. 独自ViewGroupはいっぱいありますか? A. そんなには多くないです   メンテナンス性を考えるとあまり作るべきでない   ・どうしても既存のViewGroupでは実現できない   ・measureとlayoutが複雑になりすぎない   場合にのみ作るようにしています