فهرست منبع

Add corner radius to item layout

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 سال پیش
والد
کامیت
28dc07d809

+ 46 - 0
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 <https://www.gnu.org/licenses/>.
+ */
+
+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())
+        }
+    }
+}

+ 6 - 0
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))
     }