From 690f6fa4c2693b0ce13977835a94bc3ce543cb7f Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 19 Sep 2024 10:13:47 +0200 Subject: [PATCH] Fixed rounded corners of main lists not properly applied on old Android versions --- .../ui/main/chat/fragment/ConversationsListFragment.kt | 1 + .../linphone/ui/main/fragment/AbstractMainFragment.kt | 10 ++++++++++ .../ui/main/history/fragment/HistoryListFragment.kt | 1 + .../ui/main/meetings/fragment/MeetingsListFragment.kt | 1 + app/src/main/res/values/dimen.xml | 1 + 5 files changed, 14 insertions(+) diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt index 54fe0f451..060d6c1fe 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt @@ -119,6 +119,7 @@ class ConversationsListFragment : AbstractMainFragment() { binding.conversationsList.setHasFixedSize(true) binding.conversationsList.layoutManager = LinearLayoutManager(requireContext()) + binding.conversationsList.outlineProvider = outlineProvider binding.conversationsList.clipToOutline = true adapter.conversationLongClickedEvent.observe(viewLifecycleOwner) { diff --git a/app/src/main/java/org/linphone/ui/main/fragment/AbstractMainFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/AbstractMainFragment.kt index eaf2b3420..cf6d2cf20 100644 --- a/app/src/main/java/org/linphone/ui/main/fragment/AbstractMainFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/fragment/AbstractMainFragment.kt @@ -20,9 +20,11 @@ package org.linphone.ui.main.fragment import android.content.res.Configuration +import android.graphics.Outline import android.os.Bundle import android.view.View import android.view.ViewGroup +import android.view.ViewOutlineProvider import android.view.inputmethod.EditorInfo import androidx.activity.OnBackPressedCallback import androidx.annotation.IdRes @@ -54,6 +56,14 @@ abstract class AbstractMainFragment : GenericMainFragment() { private const val TAG = "[Abstract Main Fragment]" } + protected val outlineProvider = object : ViewOutlineProvider() { + override fun getOutline(view: View?, outline: Outline?) { + val radius = resources.getDimension(R.dimen.top_bar_rounded_corner_radius) + view ?: return + outline?.setRoundRect(0, 0, view.width, (view.height + radius).toInt(), radius) + } + } + private var currentFragmentId: Int = 0 private lateinit var viewModel: AbstractMainViewModel diff --git a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt index 59b905552..5a9b31082 100644 --- a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt @@ -106,6 +106,7 @@ class HistoryListFragment : AbstractMainFragment() { binding.historyList.setHasFixedSize(true) binding.historyList.layoutManager = LinearLayoutManager(requireContext()) + binding.historyList.outlineProvider = outlineProvider binding.historyList.clipToOutline = true adapter.callLogLongClickedEvent.observe(viewLifecycleOwner) { diff --git a/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt b/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt index 717a03332..98b0ebf84 100644 --- a/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt @@ -118,6 +118,7 @@ class MeetingsListFragment : AbstractMainFragment() { val headerItemDecoration = RecyclerViewHeaderDecoration(requireContext(), adapter) binding.meetingsList.addItemDecoration(headerItemDecoration) + binding.meetingsList.outlineProvider = outlineProvider binding.meetingsList.clipToOutline = true binding.setNewMeetingClicked { diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml index 2b066a1c8..1719c9692 100644 --- a/app/src/main/res/values/dimen.xml +++ b/app/src/main/res/values/dimen.xml @@ -42,6 +42,7 @@ 11dp 20dp + 20dp 54dp 55dp 70dp