layoutを作るさいに普段RelativeLayoutを使わなきゃって思うタイミングを紹介します。
RelativeLayoutとは
指定したviewから相対的に位置を指定できる。メリットとしては、ネストを減らせる。デメリットとしては、可読性が著しく下がる。
RelativeLayoutの詳細に関しては、今さら聞けないRelativeLayout がわかりやすいかと思います。
なんで使うの?
ネストを減らすため。起動速度を上げるため。
UXを向上させるために、起動速度というのは重要というのはご存知かと思いますが、LinearLayoutでがんがんネストしているのをRelativeLayoutで減らすことでかなり速くなります。(当社比)
なので、ネストが変わらない場合はあんまり意味がないです。
使いどころ
ざっと思いつくのはこんな感じのlayoutの場合
- 3つ以上ネストができている
- RecyclerViewで繰り返し使う
- MainActivityといったユーザーが繰り返し見る
特に、デザイナーさんがこだわりをもってデザインされた(複雑な)layoutで使うと、効果を発揮しやすいです。
どこでも使えばいいような気がしますが、可読性も下がりますし、調整も大変なので、効果が出そうなところでやるのが精神衛生上もいいかと思います。
コツ
LinearLayoutでは考慮しないところです。
- ネストを減らすためにviewを増やすのはok
- layout_alignHogehogeをしっかり理解する
- 完璧を目指さない、あきらめない
相対なので、ダミーのviewをわざと置いて位置を調整することがよくあります。また、layout_alignHogehogeを組み合わせることで、なんかいい感じになってくれることがあるので、1回やってダメでも後日やってみるとうまくいくことがあります。
おわりに
もっと実例やイメージを見せながら説明した方がわかりやすかったのかもしれませんが、起動速度が速くなることは自明ですし、出力結果も同じなのでざっくりとした説明だけにしておきました。
実際に見てみたいなどありましたらgithubか何かを教えていただければ、afterをお見せできると思うので、コメントか何かに書いてもらえればと思います。
おまけ
起動速度の計測についてですが、
AndroidStudioのAndroid MonitorでNo FilterにしてDisplayedで検索するとActivityの起動時間が出力されますので、それを参考にして計測しています。