2018/2/9 DroidKaigi 2018 DAY02 room1 10:30~ 発表の付録3
DroidKaigi 2018付録3ノハナ社のレイアウト戦略株式会社ノハナ 瀬戸優之@seto_hi
View Slide
ノハナ社のレイアウト戦略● レイアウトどうしたらいいの?のノハナ的回答● あくまで参考● みんな違ってみんないい
Q1Q. レイアウトエディタ使ってます?A. 使ってません ・意図しない要素が追加されるリスクが怖い ・エンジニアが楽をしても結局はQAコストになる ・ConstraintLayoutの属性はそんなに多くないです ・覚えましょう※eclipse時代から開発しているのでxmlに慣れすぎている
Q2Q. レイアウトのRootはすべてConstraintLayoutですか?A. 違います ConstraintLayoutな画面は多いですが、 measure回数が少なくなることと 保守性を考えて レイアウトを組みます
Measure回数ViewGroup Measure回数FrameLayout 自身のMeasureSpecがEXACTLYなら1回それ以外は2回されるViewありLinearLayout WeightがないViewは1回WeightをあるViewはだいたい2回RelativeLayout 2回ConstraintLayout Viewのサイズが固定値なら1回そうでなければ2〜最大3回ただし別途複数回レイアウト計算が走る
ConstraintLayout利点● 階層が浅くなりやすい○ 自由度が高い○ だいたいのレイアウトに対応できる!すごい!● RootをConstraintLayoutにすると、レイアウトを大幅に変更しても対応しやすい● 多機能○ Groupなど
ConstraintLayout欠点● 簡単なレイアウトには計算が多すぎる○ いい感じのレイアウトではmeasureがほぼ2回走る○ 現状の端末では十二分に高速だとは思うが..■ 簡単なレイアウトなので複雑な計算しても高速● 記述が多い○ 例えば縦組みレイアウトならLinearLayoutの方が記述も少なく処理も高速人間の目にも優しい
ノハナ流 ViewGroup決定メソッドLinearLayoutRelativeLayoutCosntraintLayout縦 or 横一直線なレイアウトレイアウトが直近で修正される可能性が高いRelativeLayoutでも実現できそうYESNOでもConstraintLayoutを使うと楽
Q3Q. 独自ViewGroupはいっぱいありますか?A. そんなには多くないです メンテナンス性を考えるとあまり作るべきでない ・どうしても既存のViewGroupでは実現できない ・measureとlayoutが複雑になりすぎない 場合にのみ作るようにしています