Everything written this session that has not been through the device: rounds 43 to 48 (each patch adversarially verified, 43's transient-notice expectation fixed), a partial round 49, the pipeline scripts, the Android Auto design and the icon comparison mock. Also the two harness changes that were never A/B'd — adaptive waits, which may only shorten a declared wait and never lengthen it, and a ship that runs the mock walk and the deploy at the same time. The A/B and its 255-step baseline are in handoff/tools; main stays at what the phone has actually walked.
35 lines
2.1 KiB
Plaintext
35 lines
2.1 KiB
Plaintext
and a `@drawable/` of our own for the background instead.
|
|
|
|
**The background is a vector drawable, not a colour and not five PNGs.**
|
|
`drawable/ic_launcher_ground.xml` carries the desktop icon's own ground —
|
|
concept 04's navy surface and the cyan glow off its top-left — mapped onto the
|
|
whole 108-unit layer, every number the kit's `src-tauri/icons/icon.svg`
|
|
multiplied by 108/1024. The flat `#05080B` was three quarters of what a masked
|
|
tile shows (the falcon covers about a quarter of it), and the glow survives
|
|
every mask: the visible top-left corner goes from `#05080B` to `#0E3543`. The
|
|
`rx="232"` on the kit's rects is not carried over; on the phone the launcher's
|
|
mask does that job.
|
|
|
|
A vector rather than a PNG set because this artwork happens to fit one.
|
|
Android's `android:type="radial"` is a circle — centre and radius, no
|
|
transform of its own — and the kit's glow is
|
|
`translate(270 220) rotate(43) scale(660)`, a **uniform** scale, so the
|
|
ellipse *is* a circle and the rotation is a no-op. Had that scale been two
|
|
numbers, no vector could have said it and this would be five rendered PNGs.
|
|
The other cheap route, a `<layer-list>` of two `<shape>`s, is out on the
|
|
linear axis alone: the concept's is 51.1° off horizontal, and a shape
|
|
drawable's `android:angle` "must be a multiple of 45", with three evenly
|
|
spaced stops at most. Folding `stop-opacity` into 8-bit alpha (0.18 → `2E`,
|
|
0.05 → `0D`) costs at most one level of 255 against the SVG's float composite.
|
|
And a vector reaches sizes no PNG here does: the media card draws this same
|
|
drawable at 512 px (below) and the Android 12+ splash slot is 240 dp, about
|
|
630 px on the Pixel, both past the 432 px an xxxhdpi PNG tops out at.
|
|
|
|
What a vector cannot do is **dither**. Both forms are 8-bit and quantise
|
|
identically — 122 colour steps down the diagonal at 432 px, longest flat run
|
|
43 px, over a total range of R 12 / G 49 / B 55 levels — so the form does not
|
|
cause banding, but only a PNG could have been dithered out of it. If the
|
|
phone's OLED contours, the answer is a dithered five-density set behind this
|
|
same `@drawable/ic_launcher_ground` name: a file per density, and no XML
|
|
moves.
|