GridLayout with RecyclerView
Battle of GridLayoutwith RecyclerViewchigichan24 @ CA.apk #7 5 min
View Slide
$whoamiKazuki Chigita (chigichan24)AbemaTV でインターン中takahiromさんのもとAndroid開発のいろはを学んでいる
GridLayout
GridLayoutجૅ
pulic class GridLayout extends ViewGroupجૅ
pulic class GridLayout extends ViewGroupN+1本の線でN個の等分領域に分けられるجૅ
pulic class GridLayout extends ViewGroup0 1 2 …⼦Viewはなんの指定もしなければ各領域に広がるN+1本の線でN個の等分領域に分けられるجૅ
pulic class GridLayout extends ViewGroup0 1 2N+1本の線でN個の等分領域に分けられる⼦Viewに専有したい数を渡せばその分だけ広がるGridLayoutManager.SpanSizeLookUp()を使うجૅ
GridLayoutwithRecyclerView
How to adapt?
How to adapt?binding.recyclerView.layoutManager= GridLayoutManager(context, spanCount)
How to adapt?binding.recyclerView.layoutManager= GridLayoutManager(context, spanCount)N+1本の線でN個の等分領域に分けられる
GridLayout (span)
GridLayout (span)ͱ
GridLayout (span)RecyclerView (Itemdecoration)ͱ
GridLayout (span)RecyclerView (Itemdecoration)ͱ͍ΖΜͳLayout͕ΊΔ
͜ΜͳLayoutΛ͘Έ͍ͨ1
͜ΜͳLayoutΛ͘Έ͍ͨ1spanCount=4のGridLayoutManagerをセットする
͜ΜͳLayoutΛ͘Έ͍ͨ1spanCount=4のGridLayoutManagerをセットするGridLayoutManager.SpanSizeLookUp() {override fun getSpanSize(position: Int): Int {//positionに応じて割り当てるサイズを渡す.}}
͜ΜͳLayoutΛ͘Έ͍ͨ1spanCount=4のGridLayoutManagerをセットするGridLayoutManager.SpanSizeLookUp() {override fun getSpanSize(position: Int): Int {//positionに応じて割り当てるサイズを渡す.return when {position == 0 -> 4position <= 2 -> 2else -> 1}}}
͜ΜͳLayoutΛ͘Έ͍ͨ1spanCount=4のGridLayoutManagerをセットするGridLayoutManager.SpanSizeLookUp() {override fun getSpanSize(position: Int): Int {//positionに応じて割り当てるサイズを渡す.return when {position == 0 -> 4position <= 2 -> 2else -> 1}}}RecyclerViewのItemDecorationのうちgetItemOffestsをoverride
͜ΜͳLayoutΛ͘Έ͍ͨ1spanCount=4のGridLayoutManagerをセットするGridLayoutManager.SpanSizeLookUp() {override fun getSpanSize(position: Int): Int {//positionに応じて割り当てるサイズを渡す.return when {position == 0 -> 4position <= 2 -> 2else -> 1}}}RecyclerView. ItemDecoration() {override fun getItemOffests(outRect: Rect,view: View,parent: RecyclerView,state: RecylerView.State) {outRect.left = margin...}}
͜ΜͳLayoutΛ͘Έ͍ͨ2
͜ΜͳLayoutΛ͘Έ͍ͨ2SpanCountは何分割にすればよいのか?
͜ΜͳLayoutΛ͘Έ͍ͨ2SpanCountは何分割にすればよいのか?等幅 & センタリングにしないといけない
͜ΜͳLayoutΛ͘Έ͍ͨ2SpanCountは何分割にすればよいのか?等幅 & センタリングにしないといけない8
͜ΜͳLayoutΛ͘Έ͍ͨ2SpaceItemを導⼊する
͜ΜͳLayoutΛ͘Έ͍ͨ2SpaceItemを導⼊する(複数のItemが必要になってくるとGroupieが便利です)
ҰൠԽここに⼊るViewの数は可変にしたい
ҰൠԽ最⼤幅になりうる数の集合の最⼩公倍数×2(多分)ここに⼊るViewの数は可変にしたい
·ͱΊGridLayoutとRecyclerViewはいろいろできるいい感じのLayoutを作るには算数⼒が必要