public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo
@ 2021-12-20 15:38 Aaron Lauterer
  2021-12-20 15:38 ` [pve-devel] [PATCH flutter_frontend 2/2] remove unused drawables for android splash screen Aaron Lauterer
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Aaron Lauterer @ 2021-12-20 15:38 UTC (permalink / raw)
  To: pve-devel

The new splash screen that came with Android 12 has stricter rules
regarding the size and form of the logo in the splash screen [0].

We do need to have a drawable that is a square with the logo / icon in
the center. That means the current approach with the png image resulted
in it being scaled to the full width and the circular mask cut if off.
The result was a broken looking splash screen.

I opted for the stacked variant of the logo and saved it as a vector
drawable in the xml format that android wants.

[0] https://developer.android.com/guide/topics/ui/splash-screen

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---
 .../main/res/drawable/proxmox_splash_logo.xml | 69 +++++++++++++++++++
 .../app/src/main/res/values-night/styles.xml  |  2 +-
 android/app/src/main/res/values/styles.xml    |  2 +-
 3 files changed, 71 insertions(+), 2 deletions(-)
 create mode 100644 android/app/src/main/res/drawable/proxmox_splash_logo.xml

diff --git a/android/app/src/main/res/drawable/proxmox_splash_logo.xml b/android/app/src/main/res/drawable/proxmox_splash_logo.xml
new file mode 100644
index 0000000..7bf4f6b
--- /dev/null
+++ b/android/app/src/main/res/drawable/proxmox_splash_logo.xml
@@ -0,0 +1,69 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="108dp"
+    android:height="108dp"
+    android:viewportWidth="28.574999"
+    android:viewportHeight="28.575">
+  <group>
+    <clip-path
+        android:pathData="M15.2415,4.9491l-4.7537,4.3921l3.7999,2.999l4.7537,-4.3921z"/>
+    <path
+        android:pathData="M14.2876,12.3402 L11.461,9.2317C11.5707,9.122 11.6984,9.0359 11.8442,8.9732 11.99,8.9106 12.1466,8.8787 12.3141,8.8774 12.4919,8.8788 12.6549,8.9141 12.8029,8.9832 12.951,9.0523 13.0796,9.1472 13.1888,9.2678L14.2876,10.4678 15.3792,9.2678C15.4923,9.1472 15.6239,9.0523 15.774,8.9832 15.9242,8.9141 16.0865,8.8788 16.2611,8.8774 16.4286,8.8787 16.5852,8.9106 16.731,8.9732 16.8768,9.0359 17.0045,9.122 17.1141,9.2317L14.2875,12.3401"
+        android:strokeWidth="0.0014572581"
+        android:fillColor="#ffffff"
+        android:strokeColor="#00000000"/>
+  </group>
+  <group>
+    <clip-path
+        android:pathData="M13.3336,20.2069l4.7537,-4.3921l-3.7999,-2.999l-4.7537,4.3921z"/>
+    <path
+        android:pathData="M14.2875,12.8158 L17.114,15.9244C17.0044,16.034 16.8767,16.1201 16.7309,16.1828 16.5851,16.2454 16.4285,16.2774 16.261,16.2786 16.0831,16.2772 15.9202,16.242 15.7721,16.1729 15.6241,16.1037 15.4955,16.0088 15.3863,15.8882L14.2875,14.6882 13.1959,15.8882C13.0828,16.0088 12.9512,16.1037 12.801,16.1729 12.6509,16.242 12.4885,16.2772 12.314,16.2786 12.1465,16.2774 11.9899,16.2454 11.8441,16.1828 11.6983,16.1201 11.5706,16.034 11.461,15.9244L14.2876,12.8159"
+        android:strokeWidth="0.0014572581"
+        android:fillColor="#ffffff"
+        android:strokeColor="#00000000"/>
+  </group>
+  <path
+      android:pathData="m14.0498,12.5781l0,0l-2.1291,-2.3349c-0.1238,-0.1321 -0.268,-0.236 -0.4324,-0.3117 -0.1644,-0.0757 -0.3422,-0.1143 -0.5333,-0.1158 -0.1834,0.0013 -0.3549,0.0363 -0.5145,0.1049 -0.1596,0.0686 -0.2995,0.1629 -0.4195,0.283l2.1608,2.3745 -2.1608,2.3745c0.12,0.1238 0.2599,0.2205 0.4195,0.2899 0.1596,0.0694 0.3311,0.1047 0.5145,0.1059 0.1916,-0.0015 0.3704,-0.0401 0.5362,-0.1158 0.1659,-0.0757 0.309,-0.1796 0.4294,-0.3117l2.1291,-2.3429"
+      android:strokeWidth="0.0014602973"
+      android:fillColor="#e57000"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="m14.5252,12.5781l0,0l2.1291,-2.3349c0.1238,-0.1321 0.268,-0.236 0.4324,-0.3117 0.1644,-0.0757 0.3422,-0.1143 0.5333,-0.1158 0.1834,0.0013 0.3549,0.0363 0.5145,0.1049 0.1596,0.0686 0.2995,0.1629 0.4195,0.283l-2.1608,2.3745 2.1608,2.3745c-0.12,0.1238 -0.2599,0.2205 -0.4195,0.2899 -0.1596,0.0694 -0.3311,0.1047 -0.5145,0.1059 -0.1916,-0.0015 -0.3704,-0.0401 -0.5362,-0.1158 -0.1659,-0.0757 -0.309,-0.1796 -0.4294,-0.3117l-2.1291,-2.3429"
+      android:strokeWidth="0.0014602973"
+      android:fillColor="#e57100"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="m8.752,18.0793l-1.0611,0c-0.0417,0.0012 -0.0768,0.0162 -0.1055,0.0451 -0.0287,0.0289 -0.0436,0.0647 -0.0448,0.1075l0,1.4657c0.1139,-0.0028 0.2086,-0.0422 0.2844,-0.1182 0.0757,-0.076 0.115,-0.1714 0.1179,-0.2864l0.8092,0c0.1151,-0.0028 0.2109,-0.0422 0.2875,-0.1182 0.0766,-0.076 0.1164,-0.1714 0.1193,-0.2864l0,-0.4023c-0.0029,-0.1151 -0.0427,-0.2109 -0.1193,-0.2875 -0.0766,-0.0766 -0.1725,-0.1164 -0.2875,-0.1193zM7.9429,18.9393l0,-0.4531l0.7097,0c0.0041,-0.0021 0.0207,0.0021 0.0497,0.0124 0.029,0.0104 0.0456,0.0394 0.0497,0.087l0,0.252c0.0021,0.0042 -0.0021,0.0212 -0.0124,0.0509 -0.0104,0.0297 -0.0394,0.0466 -0.087,0.0509z"
+      android:strokeWidth="0.008793501"
+      android:fillColor="#ffffff"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="m11.0079,18.789l0,-0.3029c-0.0028,-0.1151 -0.0422,-0.2109 -0.1182,-0.2875 -0.076,-0.0766 -0.1714,-0.1164 -0.2864,-0.1193l-1.0611,0c-0.0427,0.0012 -0.0781,0.0162 -0.1063,0.0451 -0.0282,0.0289 -0.0429,0.0647 -0.0439,0.1075l0,1.4657c0.114,-0.0028 0.2091,-0.0422 0.2855,-0.1182 0.0764,-0.076 0.1161,-0.1714 0.1191,-0.2864l0,-0.1017l0.4601,0l0.2335,0.3329c0.0375,0.0538 0.0845,0.0959 0.141,0.1266 0.0565,0.0306 0.1197,0.0462 0.1896,0.0468 0.0337,-0 0.0663,-0.004 0.098,-0.0118 0.0316,-0.0078 0.0614,-0.0193 0.0893,-0.0344l-0.326,-0.4647c0.0945,-0.0205 0.1719,-0.0668 0.2323,-0.139 0.0604,-0.0722 0.0916,-0.1584 0.0936,-0.2586zM9.7965,18.8376l0,-0.3514l0.7051,0c0.0042,-0.0021 0.0212,0.0021 0.0509,0.0124 0.0297,0.0104 0.0466,0.0394 0.0509,0.087l0,0.1526c0.0021,0.0041 -0.0021,0.0207 -0.0127,0.0497 -0.0106,0.029 -0.0403,0.0456 -0.089,0.0497z"
+      android:strokeWidth="0.008793501"
+      android:fillColor="#ffffff"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="m12.4502,18.0793l-0.8068,0c-0.115,0.0029 -0.2104,0.0427 -0.2864,0.1193 -0.076,0.0766 -0.1154,0.1725 -0.1182,0.2875l0,0.8068c0.0028,0.115 0.0422,0.2104 0.1182,0.2864 0.076,0.076 0.1714,0.1154 0.2864,0.1182l0.8068,0c0.115,-0.0028 0.2104,-0.0422 0.2864,-0.1182 0.076,-0.076 0.1154,-0.1714 0.1182,-0.2864l0,-0.8068c-0.0028,-0.1151 -0.0422,-0.2109 -0.1182,-0.2875 -0.076,-0.0766 -0.1714,-0.1164 -0.2864,-0.1193zM12.4502,19.1913c0.0021,0.0042 -0.0021,0.0212 -0.0127,0.0509 -0.0106,0.0297 -0.0403,0.0466 -0.089,0.0509l-0.6034,0c-0.0042,0.0021 -0.0212,-0.0021 -0.0509,-0.0127 -0.0297,-0.0106 -0.0466,-0.0403 -0.0509,-0.089l0,-0.6057c-0.0021,-0.0041 0.0021,-0.0207 0.0127,-0.0497 0.0106,-0.029 0.0403,-0.0456 0.089,-0.0497l0.6034,0c0.0042,-0.0021 0.0212,0.0021 0.0509,0.0124 0.0297,0.0104 0.0466,0.0394 0.0509,0.087z"
+      android:strokeWidth="0.008793501"
+      android:fillColor="#ffffff"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="m14.8934,18.1949c-0.0351,-0.0351 -0.0759,-0.0626 -0.1225,-0.0826 -0.0466,-0.02 -0.0967,-0.0302 -0.1503,-0.0306 -0.057,0.0004 -0.1095,0.0117 -0.1575,0.0338 -0.048,0.0221 -0.0895,0.0525 -0.1246,0.091l-0.3491,0.3838 -0.3514,-0.3838c-0.0359,-0.0396 -0.0774,-0.0702 -0.1243,-0.0919 -0.0469,-0.0217 -0.0987,-0.0327 -0.1555,-0.0329 -0.0536,0.0004 -0.1036,0.0106 -0.1503,0.0306 -0.0466,0.02 -0.0875,0.0476 -0.1225,0.0826l0.6311,0.6936 -0.6311,0.6936c0.0351,0.0362 0.0759,0.0644 0.1225,0.0847 0.0466,0.0203 0.0967,0.0306 0.1503,0.0309 0.056,-0.0004 0.1082,-0.0117 0.1566,-0.0338 0.0485,-0.0221 0.0903,-0.0525 0.1254,-0.091l0.3491,-0.3838 0.3491,0.3838c0.035,0.0386 0.0765,0.0689 0.1246,0.091 0.048,0.0221 0.1005,0.0334 0.1575,0.0338 0.0536,-0.0004 0.1036,-0.0106 0.1503,-0.0309 0.0466,-0.0203 0.0875,-0.0485 0.1225,-0.0847l-0.6311,-0.6936z"
+      android:strokeWidth="0.008793501"
+      android:fillColor="#ffffff"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="m16.9968,18.0793l-0.2543,0c-0.0832,0.0012 -0.1573,0.0237 -0.2222,0.0676 -0.065,0.0439 -0.1142,0.1023 -0.1477,0.1751l0.0023,-0.0046 -0.2381,0.5225 -0.2358,-0.5225l0,0.0046c-0.0325,-0.0728 -0.0814,-0.1312 -0.1468,-0.1751 -0.0654,-0.0439 -0.1398,-0.0665 -0.2231,-0.0676l-0.252,0c-0.0438,0.0012 -0.0799,0.0162 -0.1084,0.0451 -0.0285,0.0289 -0.0432,0.0647 -0.0442,0.1075l0,1.4657c0.114,-0.0028 0.2091,-0.0422 0.2855,-0.1182 0.0764,-0.076 0.1161,-0.1714 0.1191,-0.2864l0,-0.7745c0.0002,-0.0105 0.0033,-0.0189 0.0095,-0.0251 0.0062,-0.0062 0.0146,-0.0094 0.0251,-0.0095 0.006,0.0002 0.0119,0.0021 0.0176,0.0058 0.0057,0.0037 0.0099,0.0079 0.0124,0.0127l0.4485,0.9895c0.0085,0.0177 0.021,0.032 0.0376,0.0431 0.0166,0.011 0.0349,0.0167 0.0549,0.017 0.0199,-0.0003 0.0379,-0.0055 0.054,-0.0159 0.0161,-0.0104 0.0289,-0.0243 0.0384,-0.0419L16.6778,18.5023c0.0035,-0.0048 0.008,-0.0091 0.0136,-0.0127 0.0055,-0.0037 0.0118,-0.0056 0.0188,-0.0058 0.0094,0.0002 0.0171,0.0033 0.0231,0.0095 0.006,0.0062 0.0091,0.0146 0.0092,0.0251l0,0.7745c0.003,0.115 0.0427,0.2104 0.1191,0.2864 0.0764,0.076 0.1716,0.1154 0.2855,0.1182l0,-1.4657c-0.0011,-0.0428 -0.0157,-0.0786 -0.0439,-0.1075 -0.0282,-0.0289 -0.0637,-0.0439 -0.1063,-0.0451z"
+      android:strokeWidth="0.008793501"
+      android:fillColor="#ffffff"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="m18.5911,18.0793l-0.8068,0c-0.115,0.0029 -0.2104,0.0427 -0.2864,0.1193 -0.076,0.0766 -0.1154,0.1725 -0.1182,0.2875l0,0.8068c0.0028,0.115 0.0422,0.2104 0.1182,0.2864 0.076,0.076 0.1714,0.1154 0.2864,0.1182l0.8068,0c0.115,-0.0028 0.2104,-0.0422 0.2864,-0.1182 0.076,-0.076 0.1154,-0.1714 0.1182,-0.2864l0,-0.8068c-0.0028,-0.1151 -0.0422,-0.2109 -0.1182,-0.2875 -0.076,-0.0766 -0.1714,-0.1164 -0.2864,-0.1193zM18.5911,19.1913c0.0021,0.0042 -0.0021,0.0212 -0.0127,0.0509 -0.0106,0.0297 -0.0403,0.0466 -0.089,0.0509l-0.6034,0c-0.0042,0.0021 -0.0212,-0.0021 -0.0509,-0.0127 -0.0297,-0.0106 -0.0466,-0.0403 -0.0509,-0.089l0,-0.6057c-0.0021,-0.0041 0.0021,-0.0207 0.0127,-0.0497 0.0106,-0.029 0.0403,-0.0456 0.089,-0.0497l0.6034,0c0.0042,-0.0021 0.0212,0.0021 0.0509,0.0124 0.0297,0.0104 0.0466,0.0394 0.0509,0.087z"
+      android:strokeWidth="0.008793501"
+      android:fillColor="#ffffff"
+      android:strokeColor="#00000000"/>
+  <path
+      android:pathData="m21.0344,18.1949c-0.0351,-0.0351 -0.0759,-0.0626 -0.1225,-0.0826 -0.0466,-0.02 -0.0967,-0.0302 -0.1503,-0.0306 -0.057,0.0004 -0.1095,0.0117 -0.1575,0.0338 -0.048,0.0221 -0.0895,0.0525 -0.1246,0.091l-0.3491,0.3838 -0.3514,-0.3838c-0.0359,-0.0396 -0.0774,-0.0702 -0.1243,-0.0919 -0.0469,-0.0217 -0.0987,-0.0327 -0.1555,-0.0329 -0.0536,0.0004 -0.1036,0.0106 -0.1503,0.0306 -0.0466,0.02 -0.0875,0.0476 -0.1225,0.0826l0.6311,0.6936 -0.6311,0.6936c0.0351,0.0362 0.0759,0.0644 0.1225,0.0847 0.0466,0.0203 0.0967,0.0306 0.1503,0.0309 0.056,-0.0004 0.1082,-0.0117 0.1566,-0.0338 0.0485,-0.0221 0.0903,-0.0525 0.1254,-0.091l0.3491,-0.3838 0.3491,0.3838c0.035,0.0386 0.0765,0.0689 0.1246,0.091 0.048,0.0221 0.1005,0.0334 0.1575,0.0338 0.0536,-0.0004 0.1036,-0.0106 0.1503,-0.0309 0.0466,-0.0203 0.0875,-0.0485 0.1225,-0.0847l-0.6311,-0.6936z"
+      android:strokeWidth="0.008793501"
+      android:fillColor="#ffffff"
+      android:strokeColor="#00000000"/>
+</vector>
diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml
index 9815690..624f304 100644
--- a/android/app/src/main/res/values-night/styles.xml
+++ b/android/app/src/main/res/values-night/styles.xml
@@ -9,7 +9,7 @@
 
   <style name="LaunchTheme" parent="Theme.SplashScreen">
     <item name="windowSplashScreenBackground">@color/splashScreenBackground</item>
-    <item name="windowSplashScreenAnimatedIcon">@drawable/launch_background</item>
+    <item name="windowSplashScreenAnimatedIcon">@drawable/proxmox_splash_logo</item>
     <item name="postSplashScreenTheme">@style/Theme.App</item>
   </style>
 </resources>
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
index 9815690..624f304 100644
--- a/android/app/src/main/res/values/styles.xml
+++ b/android/app/src/main/res/values/styles.xml
@@ -9,7 +9,7 @@
 
   <style name="LaunchTheme" parent="Theme.SplashScreen">
     <item name="windowSplashScreenBackground">@color/splashScreenBackground</item>
-    <item name="windowSplashScreenAnimatedIcon">@drawable/launch_background</item>
+    <item name="windowSplashScreenAnimatedIcon">@drawable/proxmox_splash_logo</item>
     <item name="postSplashScreenTheme">@style/Theme.App</item>
   </style>
 </resources>
-- 
2.30.2





^ permalink raw reply	[flat|nested] 8+ messages in thread

* [pve-devel] [PATCH flutter_frontend 2/2] remove unused drawables for android splash screen
  2021-12-20 15:38 [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo Aaron Lauterer
@ 2021-12-20 15:38 ` Aaron Lauterer
  2021-12-20 19:25   ` Thomas Lamprecht
  2021-12-20 19:21 ` [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo Thomas Lamprecht
  2021-12-20 19:37 ` Thomas Lamprecht
  2 siblings, 1 reply; 8+ messages in thread
From: Aaron Lauterer @ 2021-12-20 15:38 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---
 .../src/main/res/drawable/launch_background.xml |  11 -----------
 .../drawable/proxmox_logo_white_orange_250.png  | Bin 10537 -> 0 bytes
 .../drawable/proxmox_logo_white_orange_800.png  | Bin 17037 -> 0 bytes
 3 files changed, 11 deletions(-)
 delete mode 100644 android/app/src/main/res/drawable/launch_background.xml
 delete mode 100644 android/app/src/main/res/drawable/proxmox_logo_white_orange_250.png
 delete mode 100644 android/app/src/main/res/drawable/proxmox_logo_white_orange_800.png

diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml
deleted file mode 100644
index 93b3925..0000000
--- a/android/app/src/main/res/drawable/launch_background.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Modify this file to customize your launch splash screen -->
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <!--<item android:drawable="@android:color/black" />-->
-    <item>
-        <bitmap
-            android:gravity="center"
-            android:src="@drawable/proxmox_logo_white_orange_250" />
-    </item>
-</layer-list>
diff --git a/android/app/src/main/res/drawable/proxmox_logo_white_orange_250.png b/android/app/src/main/res/drawable/proxmox_logo_white_orange_250.png
deleted file mode 100644
index 153fe982fad9cc63c72c6fe04393f7093764d530..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10537
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

diff --git a/android/app/src/main/res/drawable/proxmox_logo_white_orange_800.png b/android/app/src/main/res/drawable/proxmox_logo_white_orange_800.png
deleted file mode 100644
index db317d47000b61c9af335c221aac2f4f19fa4f01..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 17037
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
Y)A*m6l3azzTSoxEikb?w&n+YV57`zjwg3PC

-- 
2.30.2





^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo
  2021-12-20 15:38 [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo Aaron Lauterer
  2021-12-20 15:38 ` [pve-devel] [PATCH flutter_frontend 2/2] remove unused drawables for android splash screen Aaron Lauterer
@ 2021-12-20 19:21 ` Thomas Lamprecht
  2021-12-21  9:25   ` Aaron Lauterer
  2021-12-20 19:37 ` Thomas Lamprecht
  2 siblings, 1 reply; 8+ messages in thread
From: Thomas Lamprecht @ 2021-12-20 19:21 UTC (permalink / raw)
  To: Proxmox VE development discussion, Aaron Lauterer

On 20/12/2021 16:38, Aaron Lauterer wrote:
> The new splash screen that came with Android 12 has stricter rules
> regarding the size and form of the logo in the splash screen [0].
> 
> We do need to have a drawable that is a square with the logo / icon in
> the center. That means the current approach with the png image resulted
> in it being scaled to the full width and the circular mask cut if off.
> The result was a broken looking splash screen.
> 
> I opted for the stacked variant of the logo and saved it as a vector
> drawable in the xml format that android wants.

I'd like to have the original svg too, ideally with some (Android SDK) CLI
tool to convert it, or at least the steps described required for that.

Please also just replace the content of the launch_background.xml drawable.

> 
> [0] https://developer.android.com/guide/topics/ui/splash-screen
> 
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
>  .../main/res/drawable/proxmox_splash_logo.xml | 69 +++++++++++++++++++
>  .../app/src/main/res/values-night/styles.xml  |  2 +-
>  android/app/src/main/res/values/styles.xml    |  2 +-
>  3 files changed, 71 insertions(+), 2 deletions(-)
>  create mode 100644 android/app/src/main/res/drawable/proxmox_splash_logo.xml
> 







^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [pve-devel] [PATCH flutter_frontend 2/2] remove unused drawables for android splash screen
  2021-12-20 15:38 ` [pve-devel] [PATCH flutter_frontend 2/2] remove unused drawables for android splash screen Aaron Lauterer
@ 2021-12-20 19:25   ` Thomas Lamprecht
  0 siblings, 0 replies; 8+ messages in thread
From: Thomas Lamprecht @ 2021-12-20 19:25 UTC (permalink / raw)
  To: Proxmox VE development discussion, Aaron Lauterer

On 20/12/2021 16:38, Aaron Lauterer wrote:
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
>  .../src/main/res/drawable/launch_background.xml |  11 -----------
>  .../drawable/proxmox_logo_white_orange_250.png  | Bin 10537 -> 0 bytes
>  .../drawable/proxmox_logo_white_orange_800.png  | Bin 17037 -> 0 bytes
>  3 files changed, 11 deletions(-)
>  delete mode 100644 android/app/src/main/res/drawable/launch_background.xml

above is avoided by just keeping the there in the first place

>  delete mode 100644 android/app/src/main/res/drawable/proxmox_logo_white_orange_250.png
>  delete mode 100644 android/app/src/main/res/drawable/proxmox_logo_white_orange_800.png
> 

and deleting those isn't really a benefit, git will still track it as part
of the repos history, so we'd not really safe space there and if one requires
those in the future again there's a chance that they overlook that there's one
already hidden in the git history and readds it, actually increasing space
usage, so as long as they do not actually hurt us lets just keep them..





^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo
  2021-12-20 15:38 [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo Aaron Lauterer
  2021-12-20 15:38 ` [pve-devel] [PATCH flutter_frontend 2/2] remove unused drawables for android splash screen Aaron Lauterer
  2021-12-20 19:21 ` [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo Thomas Lamprecht
@ 2021-12-20 19:37 ` Thomas Lamprecht
  2021-12-21  9:27   ` Aaron Lauterer
  2 siblings, 1 reply; 8+ messages in thread
From: Thomas Lamprecht @ 2021-12-20 19:37 UTC (permalink / raw)
  To: Proxmox VE development discussion, Aaron Lauterer

On 20/12/2021 16:38, Aaron Lauterer wrote:
> The new splash screen that came with Android 12 has stricter rules
> regarding the size and form of the logo in the splash screen [0].

oh, do you have an actual reference to the strict rules you found, as [0]

As I read [0] quite closely and basically all mentions regarding the
drawable are IMO the opposite of strict, e.g.:

> The app icon (1) should be a vector drawable, and it can be static or animated.

And all other references are similarly vague and imply multiple times that
any drawable should work.

> 
> We do need to have a drawable that is a square with the logo / icon in
> the center. That means the current approach with the png image resulted
> in it being scaled to the full width and the circular mask cut if off.

hmm, the bitmap used sets `android:gravity` to `center` though, which is
documented as:

> Place the object in the center of its container in both the vertical and
> horizontal axis, not changing its size.

-- https://developer.android.com/guide/topics/resources/drawable-resource#XmlBitmap

> The result was a broken looking splash screen.

FWIW, I only run into the following issue:
https://issuetracker.google.com/issues/207095799#comment10

> 
> I opted for the stacked variant of the logo and saved it as a vector
> drawable in the xml format that android wants.
> 
> [0] https://developer.android.com/guide/topics/ui/splash-screen
> 
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
>  .../main/res/drawable/proxmox_splash_logo.xml | 69 +++++++++++++++++++
>  .../app/src/main/res/values-night/styles.xml  |  2 +-
>  android/app/src/main/res/values/styles.xml    |  2 +-
>  3 files changed, 71 insertions(+), 2 deletions(-)
>  create mode 100644 android/app/src/main/res/drawable/proxmox_splash_logo.xml
> 





^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo
  2021-12-20 19:21 ` [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo Thomas Lamprecht
@ 2021-12-21  9:25   ` Aaron Lauterer
  0 siblings, 0 replies; 8+ messages in thread
From: Aaron Lauterer @ 2021-12-21  9:25 UTC (permalink / raw)
  To: Thomas Lamprecht, Proxmox VE development discussion



On 12/20/21 20:21, Thomas Lamprecht wrote:
> On 20/12/2021 16:38, Aaron Lauterer wrote:
>> The new splash screen that came with Android 12 has stricter rules
>> regarding the size and form of the logo in the splash screen [0].
>>
>> We do need to have a drawable that is a square with the logo / icon in
>> the center. That means the current approach with the png image resulted
>> in it being scaled to the full width and the circular mask cut if off.
>> The result was a broken looking splash screen.
>>
>> I opted for the stacked variant of the logo and saved it as a vector
>> drawable in the xml format that android wants.
> 
> I'd like to have the original svg too, ideally with some (Android SDK) CLI
> tool to convert it, or at least the steps described required for that.
> 
> Please also just replace the content of the launch_background.xml drawable.

Will do. If I don't find a CLI way to convert it, I'll document the steps.

> 
>>
>> [0] https://developer.android.com/guide/topics/ui/splash-screen
>>
>> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
>> ---
>>   .../main/res/drawable/proxmox_splash_logo.xml | 69 +++++++++++++++++++
>>   .../app/src/main/res/values-night/styles.xml  |  2 +-
>>   android/app/src/main/res/values/styles.xml    |  2 +-
>>   3 files changed, 71 insertions(+), 2 deletions(-)
>>   create mode 100644 android/app/src/main/res/drawable/proxmox_splash_logo.xml
>>
> 
> 
> 




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo
  2021-12-20 19:37 ` Thomas Lamprecht
@ 2021-12-21  9:27   ` Aaron Lauterer
  2021-12-21  9:36     ` Thomas Lamprecht
  0 siblings, 1 reply; 8+ messages in thread
From: Aaron Lauterer @ 2021-12-21  9:27 UTC (permalink / raw)
  To: Thomas Lamprecht, Proxmox VE development discussion



On 12/20/21 20:37, Thomas Lamprecht wrote:
> On 20/12/2021 16:38, Aaron Lauterer wrote:
>> The new splash screen that came with Android 12 has stricter rules
>> regarding the size and form of the logo in the splash screen [0].
> 
> oh, do you have an actual reference to the strict rules you found, as [0]
> 
> As I read [0] quite closely and basically all mentions regarding the
> drawable are IMO the opposite of strict, e.g.:
> 
>> The app icon (1) should be a vector drawable, and it can be static or animated.
> 
> And all other references are similarly vague and imply multiple times that
> any drawable should work.

I think the following line below figure 2 is the important one:
	"As with adaptive icons, one-third of the foreground is masked (3)."

Hinting at the #3 in the figure, which is the area outside the circle. Taking a closer look at the current splash screen, one will see that the drawable is masked in a circular shape. Depending on how it is scaling, the circular mask will be easier or harder to spot.

> 
>>
>> We do need to have a drawable that is a square with the logo / icon in
>> the center. That means the current approach with the png image resulted
>> in it being scaled to the full width and the circular mask cut if off.
> 
> hmm, the bitmap used sets `android:gravity` to `center` though, which is
> documented as:
> 
>> Place the object in the center of its container in both the vertical and
>> horizontal axis, not changing its size.
> 
> -- https://developer.android.com/guide/topics/resources/drawable-resource#XmlBitmap

That probably explains why it did look quite different on your phone than on mine regarding how large and cutoff it appeared, depending on how they are set up regarding the px to dp (device independent pixel) conversion.

> 
>> The result was a broken looking splash screen.
> 
> FWIW, I only run into the following issue:
> https://issuetracker.google.com/issues/207095799#comment10
> 
>>
>> I opted for the stacked variant of the logo and saved it as a vector
>> drawable in the xml format that android wants.
>>
>> [0] https://developer.android.com/guide/topics/ui/splash-screen
>>
>> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
>> ---
>>   .../main/res/drawable/proxmox_splash_logo.xml | 69 +++++++++++++++++++
>>   .../app/src/main/res/values-night/styles.xml  |  2 +-
>>   android/app/src/main/res/values/styles.xml    |  2 +-
>>   3 files changed, 71 insertions(+), 2 deletions(-)
>>   create mode 100644 android/app/src/main/res/drawable/proxmox_splash_logo.xml
>>
> 




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo
  2021-12-21  9:27   ` Aaron Lauterer
@ 2021-12-21  9:36     ` Thomas Lamprecht
  0 siblings, 0 replies; 8+ messages in thread
From: Thomas Lamprecht @ 2021-12-21  9:36 UTC (permalink / raw)
  To: Aaron Lauterer, Proxmox VE development discussion

On 21/12/2021 10:27, Aaron Lauterer wrote:
> On 12/20/21 20:37, Thomas Lamprecht wrote:
>> On 20/12/2021 16:38, Aaron Lauterer wrote:
>>> The new splash screen that came with Android 12 has stricter rules
>>> regarding the size and form of the logo in the splash screen [0].
>>
>> oh, do you have an actual reference to the strict rules you found, as [0]
>>
>> As I read [0] quite closely and basically all mentions regarding the
>> drawable are IMO the opposite of strict, e.g.:
>>
>>> The app icon (1) should be a vector drawable, and it can be static or animated.
>>
>> And all other references are similarly vague and imply multiple times that
>> any drawable should work.
> 
> I think the following line below figure 2 is the important one:
>     "As with adaptive icons, one-third of the foreground is masked (3)."
> 
> Hinting at the #3 in the figure, which is the area outside the circle. Taking a closer look at the current splash screen, one will see that the drawable is masked in a circular shape. Depending on how it is scaling, the circular mask will be easier or harder to spot.

ack, thanks for clarifying this to me.

> 
>>
>>>
>>> We do need to have a drawable that is a square with the logo / icon in
>>> the center. That means the current approach with the png image resulted
>>> in it being scaled to the full width and the circular mask cut if off.
>>
>> hmm, the bitmap used sets `android:gravity` to `center` though, which is
>> documented as:
>>
>>> Place the object in the center of its container in both the vertical and
>>> horizontal axis, not changing its size.
>>
>> -- https://developer.android.com/guide/topics/resources/drawable-resource#XmlBitmap
> 
> That probably explains why it did look quite different on your phone than on mine regarding how large and cutoff it appeared, depending on how they are set up regarding the px to dp (device independent pixel) conversion.
> 

yeah, could make sense, anyhow if the vector graphic works everywhere I'm glad to 
switch over to that one.




^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-12-21  9:36 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-20 15:38 [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo Aaron Lauterer
2021-12-20 15:38 ` [pve-devel] [PATCH flutter_frontend 2/2] remove unused drawables for android splash screen Aaron Lauterer
2021-12-20 19:25   ` Thomas Lamprecht
2021-12-20 19:21 ` [pve-devel] [PATCH futter_frontend 1/2] fix android splash screen logo Thomas Lamprecht
2021-12-21  9:25   ` Aaron Lauterer
2021-12-20 19:37 ` Thomas Lamprecht
2021-12-21  9:27   ` Aaron Lauterer
2021-12-21  9:36     ` Thomas Lamprecht

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal