Android 演示文稿显示:错误的DPI';s

Android 演示文稿显示:错误的DPI';s,android,dpi,hdmi,multiscreen,Android,Dpi,Hdmi,Multiscreen,我的应用程序在手机中运行&使用演示文稿显示渲染场景 这款手机是一款480dpi左右的三星Galaxy S4 我用MHL/HDMI适配器连接了一台40英寸电视。如LogCat所示,这些是它的指标: {"HDMI Screen": 1920 x 1080, 60.000004 fps, density 320, 320.0 x 320.0 dpi, touch EXTERNAL, rotation 0, type HDMI, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_

我的应用程序在手机中运行&使用
演示文稿
显示渲染场景

这款手机是一款480dpi左右的三星Galaxy S4

我用MHL/HDMI适配器连接了一台40英寸电视。如LogCat所示,这些是它的指标:

{"HDMI Screen": 1920 x 1080, 60.000004 fps, density 320, 320.0 x 320.0 dpi, touch EXTERNAL, rotation 0, type HDMI, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_PRESENTATION}

我的问题是,二次显示的dpi显然是错误的!密度比320dpi低得多。我想知道这个值是从哪里来的,它是否可以调整。我想在mdpi栏中使用一个值,这样字体就会变小。

如果你在DisplayMatrics类中查看dpi,它是不准确的。它取决于nds位于OEM在构建Android时设置的一个字段上,但该字段未设置,不会导致任何错误,因为它没有在任何地方使用。因此,即使是在构建设备时使用的本机屏幕,您也不能信任它。将其信任于外部屏幕的可能性更小。

请记住,虽然物理密度要低得多,但外观t密度可能在规定值附近。你坐在离电视远得多的地方,而不是离手机远得多,因此,虽然它是一台40英寸的电视,但明显的屏幕大小将是它的一小部分。我的意思是,DisplayMetrics中的字段在AOSP中的任何地方都没有使用。因此,如果它是错误的,它不会在冒烟测试中引起任何错误。@commonware这就是我所怀疑的,但是,开发人员对此有控制权吗?在我的应用程序中,字体大小在320dpi时大得离谱,如果我能将dpi降低到200左右,一切看起来都会好得多。顺便说一句,我正在使用您的cwac演示库,喜欢它!“但是,开发人员对此有任何控制权吗?”——没有直接回答。我没有测试外部显示器的
上下文是否符合
-TV
资源集限定符。如果是这样的话,您可以将尺寸资源用于字体大小,并使用调整后的值覆盖电视场景中的尺寸资源。否则,请设置单独的维度资源值(例如,
@dimen/font\u size
@dimen/font\u size\u tv
),并将
\u tv
用于加载到
演示文稿中的布局。如果你试图在这两种情况下使用相同的布局,后一种方法将是一件痛苦的事情。@commonware因为我完全控制了渲染过程,我可以很容易地包含一个因素来缩小字体的大小,将采用这种方法,然而,我认为Android应该包含这种功能。我做了额外的测试,发现在一台小得多的电视-22“-中,报告的DPI是相同的,所以对于屏幕大小来说,它是有意义的。我想它只是在巨大的电视上,其值可能太高。谢谢你的回答!我不想相信它,只是想改变它。Android在50”屏幕上以320dpi的渲染看起来很可笑,字体真的很大。另请参见:谢谢链接,但这与我的问题无关,我说的是外部显示。另外,请注意,许多稍微高级的应用程序有效地使用DisplayMetrics字段来调整坐标、增加字体大小等。。。因此,如果一台设备报告奇怪的值,肯定会引起很多错误!等等什么?使用DisplayMetrics缩放文本?基于密度移动物体?这是一个非常糟糕的想法,而且总是有更好的方法来使用密度无关的工具来做同样的事情。一个非常糟糕的想法?别这么想!Android完全依赖于densityFactor和FontScaledDensityFactor,我不明白为什么依赖它是个坏主意——取决于具体情况。由于这些价值观,我能够将我的自定义小部件扩展到一千种不同的设备,直到今天都没有任何问题!我想知道如果没有displaymetrics值,您如何将dp转换为px。。。。