feat(android): a shield instead of a padlock, and the launch screen matches

The padlock was drawn in thin blue strokes on slate: at 36 px the outline muddied and the shackle vanished. A filled white shield with a punched keyhole keeps its silhouette at every size, and says protection more plainly.

The keyhole is CUT OUT rather than painted, through an even-odd fill on a single path - painting it meant keeping two files agreeing on one colour, and any drift would have read as a smudge. The launch layer is the exception: it sits flat on the system background, where a cut-out would be a hole, so there the keyhole is painted and stays entirely inside the white shield.

The launch background takes the top of the app gradient instead of slate, so the launch screen dissolves into the first screen rather than cutting against it. No gradient inside the vectors: the aapt this chain uses does not know inline gradients.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-17 00:02:27 +01:00
parent 8c1cabb5bd
commit ec8b5b3410
12 changed files with 78 additions and 74 deletions
@@ -1,22 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Version monochrome, pour les icones themees d'Android 13+. Le systeme
ignore les couleurs et ne garde que la silhouette, qu'il teinte selon le
fond d'ecran. La serrure doit donc etre un TROU dans le trace, pas une
forme d'une autre couleur - d'ou le remplissage evenOdd plutot que deux
chemins superposes. -->
<!-- Couche monochrome (icones thematiques d'Android 13+). Le systeme ne
retient que la FORME : il repeint le dessin avec la couleur du theme de
l'utilisateur, donc la couleur posee ici n'a aucune importance.
Meme bouclier que l'avant-plan, serrure evidee de la meme facon. -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:strokeColor="#FFFFFF"
android:strokeWidth="5.5"
android:strokeLineCap="round"
android:fillColor="#00000000"
android:pathData="M44,56 L44,47 A10,10 0 0 1 64,47 L64,56" />
<path
android:fillColor="#FFFFFF"
android:fillType="evenOdd"
android:pathData="M38,54 L70,54 A4,4 0 0 1 74,58 L74,76 A4,4 0 0 1 70,80 L38,80 A4,4 0 0 1 34,76 L34,58 A4,4 0 0 1 38,54 Z M54,62 m-4,0 a4,4 0 1,0 8,0 a4,4 0 1,0 -8,0 Z M52.2,66 L55.8,66 L55,73.5 L53,73.5 Z" />
android:pathData="M54,29 L77,37 L77,56 C77,69.5 67,78 54,82 C41,78 31,69.5 31,56 L31,37 Z
M54,50 m-7,0 a7,7 0 1,0 14,0 a7,7 0 1,0 -14,0 Z
M51,55.5 L57,55.5 L58.6,70 L49.4,70 Z" />
</vector>