Lighten draw scrim and cover the full screen
CI / skip-ci-check (pull_request) Successful in 33s
CI / secret-scan (pull_request) Successful in 36s

Draw mode was inset under status/nav (bright bands) and too dark to read.
This commit is contained in:
2026-08-05 14:14:47 -04:00
parent 9dfe0af6e1
commit 4c668ab105
5 changed files with 30 additions and 13 deletions
+5
View File
@@ -1,5 +1,10 @@
# Changelog
## 1.16.4-light-scrim — 2026-08-05
- Draw mode scrim covers the full screen (was inset under status/nav)
- Lighter dim so underlying text stays readable
## 1.16.3-tight-select — 2026-08-05
- Fix: circling a short heading no longer steals the large text block above it
+2 -2
View File
@@ -11,8 +11,8 @@ android {
applicationId = "com.example.crkl"
minSdk = 27
targetSdk = 34
versionCode = 20
versionName = "1.16.3-tight-select"
versionCode = 21
versionName = "1.16.4-light-scrim"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
@@ -159,21 +159,25 @@ class CrklAccessibilityService : AccessibilityService() {
}
private fun fullScreenParams(): WindowManager.LayoutParams {
val metrics = resources.displayMetrics
val nav = navigationBarHeight()
val status = statusBarHeight()
val height = (metrics.heightPixels - nav - status).coerceAtLeast(dp(200))
// True full-bleed — previous inset for status/nav left a bright band
// at the top (and bottom) that made draw mode look broken.
return WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
height,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN or
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT
).apply {
gravity = Gravity.TOP or Gravity.START
x = 0
y = status
y = 0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
layoutInDisplayCutoutMode =
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
}
}
}
@@ -255,7 +255,13 @@ class OverlayView(
val pad = dp(16f)
val w = dp(88f)
val h = dp(36f)
exitRect.set(width - pad - w, pad, width - pad, pad + h)
val top = statusBarInset() + pad
exitRect.set(width - pad - w, top, width - pad, top + h)
}
private fun statusBarInset(): Float {
val id = resources.getIdentifier("status_bar_height", "dimen", "android")
return if (id > 0) resources.getDimension(id) else dp(24f)
}
private fun toScreenBounds(local: RectF): RectF {
@@ -323,11 +329,12 @@ class OverlayView(
val failing = System.currentTimeMillis() < failFlashUntil
val pillW = dp(280f)
val pillH = dp(38f)
val pillTop = statusBarInset() + dp(12f)
val pill = RectF(
width / 2f - pillW / 2f,
dp(52f),
pillTop,
width / 2f + pillW / 2f,
dp(52f) + pillH
pillTop + pillH
)
canvas.drawRoundRect(pill, dp(19f), dp(19f), hintPillPaint)
canvas.drawRoundRect(pill, dp(19f), dp(19f), hintRingPaint)
@@ -16,7 +16,8 @@ object CrklUi {
val Mist = Color.parseColor("#6B7A88")
val MistLight = Color.parseColor("#9AA6B2")
val Hairline = Color.parseColor("#1A0E1A24")
val Dim = Color.argb(140, 8, 14, 20)
/** Scrim while drawing — light enough to read underlying text. */
val Dim = Color.argb(56, 8, 14, 20)
val Danger = Color.parseColor("#B85A4A")
val Ok = Color.parseColor("#2A7A4B")
val ChipFg = Color.parseColor("#FFFFFF")