1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.wallpaper.picker.category.ui.view.decoration 18 19 import android.graphics.Rect 20 import android.view.View 21 import androidx.recyclerview.widget.RecyclerView 22 import com.android.wallpaper.R 23 24 /** 25 * This class adds the appropriate padding to a category based on the number of columns it occupies 26 */ 27 class CategoriesGridPaddingDecoration(val padding: Int, val columnCalculator: (Int) -> Int) : 28 RecyclerView.ItemDecoration() { getItemOffsetsnull29 override fun getItemOffsets( 30 outRect: Rect, 31 view: View, 32 parent: RecyclerView, 33 state: RecyclerView.State 34 ) { 35 36 outRect.left = padding 37 outRect.right = padding 38 39 val position = parent.getChildAdapterPosition(view) 40 val columnCount = columnCalculator(position) 41 if (columnCount > 1) { 42 outRect.bottom = 43 parent.context.resources.getDimensionPixelSize( 44 R.dimen.grid_item_featured_category_padding_bottom 45 ) 46 } else { 47 outRect.bottom = 48 parent.context.resources.getDimensionPixelSize( 49 R.dimen.grid_item_category_padding_bottom 50 ) 51 } 52 } 53 } 54