From 1adc326d4b5c7d31a468639ead93e234ff5a16fc Mon Sep 17 00:00:00 2001 From: alperozturk Date: Tue, 12 Dec 2023 12:39:50 +0100 Subject: [PATCH] Add corner radius to item layout Signed-off-by: alperozturk --- .../utils/extensions/ViewExtensions.kt | 46 +++++++++++++++++++ .../android/ui/adapter/OCFileListDelegate.kt | 6 +++ 2 files changed, 52 insertions(+) create mode 100644 app/src/main/java/com/nextcloud/utils/extensions/ViewExtensions.kt diff --git a/app/src/main/java/com/nextcloud/utils/extensions/ViewExtensions.kt b/app/src/main/java/com/nextcloud/utils/extensions/ViewExtensions.kt new file mode 100644 index 0000000000..a4d2368949 --- /dev/null +++ b/app/src/main/java/com/nextcloud/utils/extensions/ViewExtensions.kt @@ -0,0 +1,46 @@ +/* + * Nextcloud Android client application + * + * @author Alper Ozturk + * Copyright (C) 2023 Alper Ozturk + * Copyright (C) 2023 Nextcloud GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package com.nextcloud.utils.extensions + +import android.content.Context +import android.graphics.Outline +import android.util.TypedValue +import android.view.View +import android.view.ViewOutlineProvider + +fun createRoundedOutline(context: Context, cornerRadiusValue: Float): ViewOutlineProvider { + return object : ViewOutlineProvider() { + override fun getOutline(view: View, outline: Outline) { + val left = 0 + val top = 0 + val right = view.width + val bottom = view.height + val cornerRadius = TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, + cornerRadiusValue, + context.resources.displayMetrics + ).toInt() + + outline.setRoundRect(left, top, right, bottom, cornerRadius.toFloat()) + } + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt index 5d95fd51af..b6d543abcd 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt @@ -33,6 +33,7 @@ import com.elyeproj.loaderviewlibrary.LoaderImageView import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.client.account.User import com.nextcloud.client.preferences.AppPreferences +import com.nextcloud.utils.extensions.createRoundedOutline import com.owncloud.android.R import com.owncloud.android.datamodel.FileDataStorageManager import com.owncloud.android.datamodel.OCFile @@ -287,12 +288,17 @@ class OCFileListDelegate( } } + @Suppress("MagicNumber") private fun setItemLayoutBackgroundColor(file: OCFile, gridViewHolder: ListGridImageViewHolder) { val itemLayoutBackgroundColorId: Int = if (file.fileId == highlightedItem?.fileId || isCheckedFile(file)) { R.color.selected_item_background } else { R.color.bg_default } + gridViewHolder.itemLayout.apply { + outlineProvider = createRoundedOutline(context, 16f) + clipToOutline = true + } gridViewHolder.itemLayout.setBackgroundColor(ContextCompat.getColor(context, itemLayoutBackgroundColorId)) }