|
本帖最后由 Mi_1109083003 于 2019-6-4 20:36 编辑 其实这个东西是怎么发现的,Google Play 上有个我常玩的游戏,这游戏在 S8+ 上工作正常,UI 是手机的界面,然而到了黑鲨2上界面就变成了平板的界面。 我用命令 “adb shell wm size 1080 × xxxx” 不断调试,终于发现: 在 1080 × 2315 的时候,计算出来的理论屏幕尺寸会达到 8 寸,同时这个游戏的 UI 会变为平板UI; 在 1080 × 2310 的时候屏幕尺寸是7.99寸,游戏 UI 还是正常的手机 UI 等于说这游戏完全是靠计算理论屏幕尺寸来自动识别你用的是平板还是手机。 然而非常不幸,在黑鲨2上直接把我的手机认成了平板,密密麻麻的 UI 堆积在6寸屏上啥都看不见,才突然有兴趣研究一下黑鲨2的分辨率配置是怎么调配的(甚至为了算公式还写了段Java代码) |
|
本帖最后由 Mi_1109083003 于 2019-6-1 00:58 编辑 首先我们先确定至少一个正确值,也就是屏幕的分辨率 Screen Width(px),假定这个值 1080 × 2340 的值没有错的话,那么我们开始按照列表里的值推算,这里有一个公式:√( ( Xpx ÷ Xdpi × α )² + ( Ypx ÷ Ydpi × α )² ) = β × α Xpx 为横向分辨率,同理 Ypx;Xdpi 为横向每英寸上的像素数量,同理 Ydpi; 带入数值到这个公式 √( ( 1080 ÷ 318.976 × α )² + ( 2340 ÷ 319.548 × α )² ) = β × α #β为屏幕理论尺寸,黑鲨2官方公布为6.39, 这里的 α 是理论像素密度(Logical Density),这个值会根据Density DPI 改变而改变,通常来说是Density DPI ÷ 160 = Logical Density,这个160是一个标准值(mDPI)。这里截图显示的 Logical Density 为 2.63 是因为 Density DPI 被我手动改成了 420 , 既然像素密度(LD)是根据DPI计算出来的,而DPI是没有错的,我们可以先排除像素密度有错,将像素密度带入这个公式 √( ( 1080 ÷ 318.976 × 2.63 )² + ( 2340 ÷ 319.548 × 2.63 )² ) =6.39 × 2.63 √( ( 8.904745)² + (19.259078)² ) = 6.39 × 2.63 √( 79.294483 + 370.912085 ) = 6.39 × 2.63 √( 450.206568 ) = 6.39 × 2.63 将这个数开方后,问题出现了 21.218071 ≠ 6.39 × 2.63 前面我们说过 6.39 是一个 β 值,这个β值我们暂时给他假定位黑鲨2 的 6.39 寸屏 那么这个β值的正解是多少呢? 20.7226115 ÷ 2.63 = 8.067707,也就是约等于图中的 Diagonal (理论尺寸)8.07寸 这个尺寸明显是不对的,既然我们这个公式里的屏幕分辨率(Xpx / Ypx ) 假定正确,同时像素密度(2.63)不可能有错,那么唯一解就是 Xdpi 和 Ydpi 的值完全不对,甚至是错得离谱 |
默戮小生 发表于 2019-5-31 20:16 没调过 |
| dpi调过没? |