switch to ViewOutlineProvider.BACKGROUND

This commit is contained in:
Rocka 2025-05-09 20:57:19 +08:00
parent 29a89053c2
commit 0d75a61620
No known key found for this signature in database
GPG Key ID: 28031158FFDD6853
2 changed files with 4 additions and 21 deletions

View File

@ -7,9 +7,7 @@ package org.fcitx.fcitx5.android.input
import android.annotation.SuppressLint
import android.graphics.drawable.GradientDrawable
import android.graphics.Outline
import android.os.Build
import android.view.View
import android.view.ViewGroup
import android.view.ViewOutlineProvider
import android.view.ViewTreeObserver.OnGlobalLayoutListener
@ -26,7 +24,6 @@ import org.fcitx.fcitx5.android.data.theme.Theme
import org.fcitx.fcitx5.android.input.candidates.floating.PagedCandidatesUi
import org.fcitx.fcitx5.android.input.preedit.PreeditUi
import splitties.dimensions.dp
import splitties.views.backgroundColor
import splitties.views.dsl.constraintlayout.below
import splitties.views.dsl.constraintlayout.bottomOfParent
import splitties.views.dsl.constraintlayout.centerHorizontally
@ -191,27 +188,13 @@ class CandidatesView(
minWidth = dp(windowMinWidth)
padding = dp(windowPadding)
val shapeDrawable = GradientDrawable().apply {
background = GradientDrawable().apply {
setColor(theme.backgroundColor)
shape = GradientDrawable.RECTANGLE
cornerRadius = dp(windowRadius).toFloat()
setColor(theme.backgroundColor)
}
background = shapeDrawable
clipToOutline = true
outlineProvider = object : ViewOutlineProvider() {
override fun getOutline(view: View, outline: Outline) {
val paddingPx = dp(windowPadding)
val radiusPx = dp(windowRadius)
val effectiveRadius = (radiusPx - paddingPx).toFloat().coerceAtLeast(0f)
outline.setRoundRect(
paddingPx.toInt(),
paddingPx.toInt(),
(view.width - paddingPx).toInt(),
(view.height - paddingPx).toInt(),
effectiveRadius
)
}
}
outlineProvider = ViewOutlineProvider.BACKGROUND
add(preeditUi.root, lParams(wrapContent, wrapContent) {
topOfParent()
startOfParent()

View File

@ -270,7 +270,7 @@
<string name="crop">Crop</string>
<string name="candidates_window">Candidates Window</string>
<string name="show_candidates_window">Show candidates window</string>
<string name="candidates_window_radius">candidates window radius</string>
<string name="candidates_window_radius">Candidates window radius</string>
<string name="follow_input_device">Depends on input device</string>
<string name="candidates_orientation">Candidates list orientation</string>
<string name="automatic">Automatic</string>