我对Android编程很陌生,让我困惑的一件事与屏幕密度和屏幕尺寸有关。我在这里阅读了很多关于其他问题的回复,并且我已经阅读了有关如何针对多种屏幕尺寸进行编程的Google文档。没有人真正帮助解决问题或我自己的普遍无知。我希望在这里提出这个问题是可以的,所以有人可能会最终解释它,以便我能够围绕这个问题解决这个问题。
首先,我一直在使用SurfaceViews,我正在投掷位图。我一直主要为三星Note 10.1(2014)版编程。屏幕为2048x1536,当我查询显示屏时,屏幕密度为2.0。我的方法是使图形在这些维度上工作但在代码中,我使用经常引用的公式将浮点dp坐标转换为像素,准备好转移到其他设备。
px = (dp * density) + 0.5f
我现在一直试图让应用程序在Samsung S2上运行。屏幕是480乘800.在手机上,应用程序是(我假设正确)从HDPI文件夹加载图形,因为像素密度是1.5。
我的第一个问题是HDPI中的图形原本太大了。我使用Resize程序快速调整原始XHDPI文件夹的大小。也许我只是没有选择正确的源设置,但结果图形远远大于我最终找到的实际480x800图形填充屏幕。
但是,这只是我更大混乱的症状。
使用位图开发应用程序时,是否有一些我错过的神奇公式允许将dp值转换为像素,还是应该根据实际的屏幕尺寸进行计算?通过公式,100dp在(1.5密度)800px宽屏幕上约为150px,而在较大(2.0密度)2560显示器上为200px。在S2的屏幕上水平方向是18%,而在Note 10.1的宽屏幕上只有8%。
我天真地认为dp值会在所有设备上转换,只是把东西放在正确的位置或者我错了吗?写这篇文章让我更加确信我误解了什么是dp值。我对使用像素密度为1的理论Google设备的建议感到困惑,然后根据其他像素密度或屏幕尺寸调整所有内容。
简单地说,正如我一直听到的那样,在dp联合工作所以一切都是统一的并不适合我,所以我现在正在寻求更明智的委员会的建议。换句话说:请帮忙!
感谢。