我的问题来自 Android 8.0 Adaptive Icon 要求:
https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive
我正在开发一个 Android 应用程序,其中启动器图标是未知的,并且进行应用程序部署的人不知道 SVG 是什么(并且没有人有时间、金钱或耐心来尝试解释/理解 SVG 是什么任何一个)。这意味着 PNG 图像需要在 Android 8.0 及更高版本上看起来不错。
自适应图标以 108dp x 108dp 显示。在 xxxhdpi (4x) 上,它的总空间为 432x432 像素。但是,前景中只使用了一个直径为 66dp 的圆,即 xxxhdpi 上的 264x264 像素。问题是图标位于圆形遮罩内。解释什么是圆形面具以及为什么需要它也将非常困难。简而言之,接收到的图像将是矩形的,大多数人喜欢填充可用空间。
所以我想做的是获取我得到的任何矩形输入图像并计算它的比率(简单),然后找到具有相同比率的矩形,该矩形使直径为 66dp 的受限圆中的空间最大化。我可以通过从 0 度到 90 度(即猜测)来使用欧拉方法方法,直到我得到“足够接近”但是一个很好的、易于遵循的代码,它不使用直接来自比率的 for 循环到一个精确的矩形会更干净。我更喜欢 C/C++ 风格,但只要它可读,我会尽我所能。我对三角函数很生疏——自从我上次不得不做任何严肃的数学运算以来已经快 20 年了,所以请不要在 LaTeX 中使用公式而不将其转换为我能理解的东西(即代码)——每当我着陆时,我都会很迷茫这些天在数学 SE 网站上。
(如果有人认为我正在寻找讲义,只要我知道要寻找什么,我就可以自己完成工作。我有三个未知数:角度,对面的长度和相邻的长度。经典的 SOH-CAH-TOA 不直接适用。我有两个已知值:斜边的长度和矩形的比率。我可以一起破解一个解决方案,但如果有的话我宁愿不更清洁的解决方案。)